Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #define MAX 100
- #define INF 1000000000
- int main()
- {
- FILE *inp=fopen("input.txt", "r");
- FILE *out=fopen("output.txt", "w");
- int A[MAX][MAX];
- int path[MAX];
- int used[MAX]={0};
- int i, j, n, snd, rcv, t1, t2, t3, min, curr;
- fscanf(inp, "%d\n%d %d", &n, &snd, &rcv);
- for(i=1;i<=n;i++)
- {
- path[i]=INF;
- for(j=1;j<=n;j++) A[i][j]=INF;
- }
- path[snd]=0;
- while(fscanf(inp, "%d %d %d", &t1, &t2, &t3)!=EOF)
- {
- A[t1][t2]=t3;
- A[t2][t1]=t3;
- }
- while(1)
- {
- min=INF;
- for(i=1;i<=n;i++)
- {
- if(!used[i] && (path[i]<min))
- {
- min=path[i];
- curr=i;
- }
- }
- if(min==INF) break;
- used[curr]=1;
- for (i=1;i<=n;i++)
- {
- if(used[i]) continue;
- if(path[i]>(path[curr]+A[curr][i])) path[i]=(path[curr]+A[curr][i]);
- }
- }
- if(path[rcv]==INF) fprintf(out, "no\n"); else fprintf(out, "%d\n", path[rcv]);
- fclose(inp);
- fclose(out);
- return 0;
- }
Add Comment
Please, Sign In to add comment