조회 수 396 추천 수 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 743
공지 키보드 화살표값 출력 좋은아빠되기 2016.11.19 1499
공지 원하는 좌표에 값 출력하기 좋은아빠되기 2016.11.19 2844
공지 Python(파이썬) 학습 자료 PDF 1 file 좋은아빠되기 2014.12.10 11226
공지 dev C++ 텍스트 색상변경 WinApi사용(textcolor 대용) 좋은아빠되기 2014.06.07 5168
공지 DEV-C++ 기본 코드 좋은아빠되기 2013.06.19 8997
공지 무료 C++ 컴파일러(윈도우용) DEV-C++ 좋은아빠되기 2013.06.18 19440
공지 이클립스 C++ 설치 파일들 좋은아빠되기 2013.06.18 38320
270 정올 기초다지기(aG003-포인터3) killerjack 2014.11.15 452
269 정올 - 문제은행 - 성적 관리 프로그램(1086) 조정미 2018.06.23 449
268 정올 기초다지기(aB003-문자열1) killerjack 2014.09.27 444
267 반올림(수정) 1 file 박윤택 2014.08.18 444
266 정올 기초다지기(포인터-자가진단2) killerjack 2014.11.15 441
265 정올 기초다지기(문자열1-자가진단5) killerjack 2014.09.20 440
264 문자 열출력이랑 문자크기 비교하기(승민) 승민 2016.05.07 432
263 정올 기초다지기(구조체-자가진단2) killerjack 2014.10.11 432
262 정올 - 실력키우기 - 전화번호 속의 암호(1620) 조정미 2017.12.09 430
261 숫자3개 연속 더하기 승민 2016.06.18 429
260 정올 반복제어문3 자가진단7 정승준 2019.02.02 425
259 원의반지름 구하기(승민) 승민 2016.08.06 421
258 일정수 거듭제곱 승민 2016.07.02 418
257 일정수 나오면 멈추고 출력,최소값,최대값 구하고 방번호까지 구하기(승민) 승민 2016.05.14 414
256 정올 - 알고리즘 - 요플레공장(2194) 조정미 2018.03.17 407
255 2의 입력한수 만큼 제곱(승민) 승민 2016.08.13 402
» 정올 - 알고리즘 - 꿀꿀이 축제(2109) - Time Limit Exceed 조정미 2018.04.28 396
253 정올 기초다지기(aB004-문자열1) killerjack 2014.09.27 396
252 정올 - 실력키우기 - 줄자접기(1112) 조정미 2018.01.06 393
251 정올 - 실력키우기 - 선택정렬(1146) 조정미 2018.01.03 387
Board Pagination Prev 1 ... 8 9 10 11 12 13 14 15 16 17 ... 26 Next
/ 26