일단 문제는 이거야


문제집 
시간 제한메모리 제한제출정답맞은 사람정답 비율
2 초128 MB5510176998634.355%
문제

n(1≤n≤1,000)개의 도시가 있다. 그리고 한 도시에서 출발하여 다른 도시에 도착하는 m(1≤m≤100,000)개의 버스가 있다. 우리는 A번째 도시에서 B번째 도시까지 가는데 드는 버스 비용을 최소화 시키려고 한다. 그러면 A번째 도시에서 B번째 도시 까지 가는데 드는 최소비용을 출력하여라.

입력

첫째 줄에 도시의 개수 n(1≤n≤1,000)이 주어지고 둘째 줄에는 버스의 개수 m(1≤m≤100,000)이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스의 출발 도시의 번호가 주어진다. 그리고 그 다음에는 도착지의 도시 번호가 주어지고 또 그 버스 비용이 주어진다. 버스 비용은 0보다 크거나 같고, 100,000보다 작은 정수이다.

그리고 m+3째 줄에는 우리가 구하고자 하는 구간 출발점의 도시번호와 도착점의 도시번호가 주어진다.

출력

첫째 줄에 출발 도시에서 도착 도시까지 가는데 드는 최소 비용을 출력한다.

예제 입력 복사
5 8 1 2 2 1 3 3 1 4 1 1 5 10 2 4 2 3 4 1 3 5 1 4 5 3 1 5


































































에디터에서 컴파일 하면 맞았다고 하는데 저 씨불놈의 사이트에서 채점하면 틀렸다한다 뭐가 문젠지 전혀모르겠음


아래서 부터는 소스


#include <stdio.h>

#define Max 1000 //노드 최대값 

#define INF 100001 //무한대를 표현하기 위한 상수값입니다. 


int cnt=0,start,end,node,edge,value; 

int select[Max]; //선택 배열 

 

int root[Max][Max];


void make (void);

int dijk (void);


main()


{

int i;

make();

dijk();


}


int dijk()

{

int index[Max];

int i,j,val,cnt,min=INF,se=1;  //se변수는 선택배열에 선택된 최소값의 노드를 순서대로 넣기 위해 선언한 변수입니다. 

for(i=2;i<=node;i++){

select[i]=0;

}

select[se]=start;

//인덱스 초기화 

for(i=1;i<=node;i++){

index[i]=root[start][i];

}


while(select[node]==0){

min=INF;

se++; 


for(i=1;i<=node;i++){

val=0;

for(j=1;j<=node;j++){

if(select[j]==i){

val=1;

break;

}

}

if(min>index[i] && val==0){

min=index[i];

cnt=i;

}

}


select[se]=cnt; // 제일 작은 값의 노드를 선택배열에  넣습니다. 

//업데이트 부분

for(i=1;i<=node;i++){

if(index[i]>index[cnt]+root[cnt][i])index[i]=index[cnt]+root[cnt][i];


}

printf("%d",index[end]);

}



void make(void){

scanf("%d %d",&node,&edge);

int i,j,a,b,c;

//배열초기화 

 

for(i=1;i<=node;i++){

for(j=1;j<=node;j++){

root[i][j]=INF;

if(i==j)root[i][j]=0;

}

}


for(i=1;i<=edge;i++){  //엣지 갯수만큼 경로를 입력받음 

scanf("%d %d %d",&a,&b,&c);

root[a][b]=c;  

}

scanf("%d %d",&start,&end);

}