조회 수 350 추천 수 0 댓글 0

#include <stdio.h>

int load[10000][3]={0};
int aaa[1000]={0};
int max=0;
int min=100000;

void line(int n, int m); //오름차순 정열
int time_check(int x, int w, int sum, int a); 
int main(void)
{
	int n, m, x, i, a=1, aa, bb;

	scanf(" %d %d %d", &n, &m, &x);
	//n=마을 수 m=도로 수 x=모이는 마을

	for(i=0; i<m; i++)
	{
		scanf(" %d %d %d", &load[i][0], &load[i][1], &load[i][2]);
		//[0]=도로의 시작점 [1]=도로의 끝점 [2]=소요시간
	}

	line(n, m);
	for(i=1; i<=n; i++)
	{
		min=100000;
		aa=0;
		bb=0;

		if(i==x)
			min=0;
		else
		{
			time_check(x, i, 0, i); //갈 때 시간
			aa=min;
			min=100000;
			time_check(i, x, 0, x); //올 때 시간
			bb=min;
			min=aa+bb; //총 시간
		}

		if(min>max) //총 시간이 가장 오래걸리는 돼지 구하기
			max=min;
	}

	printf("%d", max);

	return 0;
}
void line(int n, int m)
{
	int i, j, a, b=1, temp;

	for(i=0; i<m; i++)
	{
		a=m-1;
		for(j=i; j<m; j++)
		{
			if(load[j][0]<load[a][0]) //출발점이 더 빠를 경우
				a=j;

			else if(load[j][0]==load[a][0] && load[j][1]<load[a][1]) //출발점은 같고 도착점이 빠를 경우
				a=j;
		}
		if(i!=a)
		{
			temp=load[i][0];
			load[i][0]=load[a][0];
			load[a][0]=temp;

			temp=load[i][1];
			load[i][1]=load[a][1];
			load[a][1]=temp;

			temp=load[i][2];
			load[i][2]=load[a][2];
			load[a][2]=temp;
		}
		if(i==0 || load[i-1][0]!=load[i][0])//출발점이 같은 도로의 좌표 범위 표시
		{
			aaa[b++]=i;
		}
	}
	aaa[b]=m;
}
int time_check(int x, int w, int sum, int a)
{
	if(x==w) //도착함
	{
		if(min>sum)
			min=sum;

		return 0;
	}
	else if(min<sum)
		return 0;

	int i;

	for(i=aaa[w]; i<aaa[w+1]; i++)
	{
		if(load[i][1]!=a)
		{
			time_check(x, load[i][1], sum+load[i][2], w);
		}
	}

	return 0;
}



List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 글쓰기는 하루 5개, 댓글은 10개만 가능합니다. 좋은아빠되기 2019.02.15 492
공지 키보드 화살표값 출력 좋은아빠되기 2016.11.19 1247
공지 원하는 좌표에 값 출력하기 좋은아빠되기 2016.11.19 2561
공지 Python(파이썬) 학습 자료 PDF 1 file 좋은아빠되기 2014.12.10 10534
공지 dev C++ 텍스트 색상변경 WinApi사용(textcolor 대용) 좋은아빠되기 2014.06.07 4906
공지 DEV-C++ 기본 코드 좋은아빠되기 2013.06.19 8495
공지 무료 C++ 컴파일러(윈도우용) DEV-C++ 좋은아빠되기 2013.06.18 19127
공지 이클립스 C++ 설치 파일들 좋은아빠되기 2013.06.18 38045
270 정올 - 실력키우기 - 팩토리얼(1309) 조정미 2018.01.02 419
269 정올 - 문제은행 - 성적 관리 프로그램(1086) 조정미 2018.06.23 418
268 문자 열출력이랑 문자크기 비교하기(승민) 승민 2016.05.07 418
267 정올 - 실력키우기 - 10진수를 2 8 16진수로(1534) 조정미 2017.12.16 417
266 정올 함수1 형성평가5 정승준 2018.12.22 412
265 정올 기초다지기(구조체-자가진단2) killerjack 2014.10.11 411
264 정올 - 실력키우기 - 전화번호 속의 암호(1620) 조정미 2017.12.09 408
263 숫자3개 연속 더하기 승민 2016.06.18 408
262 원의반지름 구하기(승민) 승민 2016.08.06 404
261 정올 빙고 조정미 2017.11.18 403
260 일정수 거듭제곱 승민 2016.07.02 400
259 정올 기초다지기(포인터-자가진단2) killerjack 2014.11.15 398
258 일정수 나오면 멈추고 출력,최소값,최대값 구하고 방번호까지 구하기(승민) 승민 2016.05.14 390
257 정올 반복제어문3 자가진단7 정승준 2019.02.02 387
256 정올 기초다지기(aB004-문자열1) killerjack 2014.09.27 380
255 정올 - 알고리즘 - 요플레공장(2194) 조정미 2018.03.17 373
254 정올 기초다지기(aG004-포인터4) killerjack 2014.11.15 371
253 윤택이 반올림 좋은아빠되기 2014.08.16 365
252 정올 - 실력키우기 - 줄자접기(1112) 조정미 2018.01.06 364
251 2의 입력한수 만큼 제곱(승민) 승민 2016.08.13 359
Board Pagination Prev 1 ... 8 9 10 11 12 13 14 15 16 17 ... 26 Next
/ 26