Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #include <bits/stdc++.h>
- using namespace std;
- ifstream fin("dijkstra.in");
- ofstream fout("dijkstra.out");
- long long n, v, D[101], T[101], A[101][101], c, x, i, j;
- bool S[101];
- int main()
- {
- fin>>n>>v;
- for( i=1; i<=n; i++)
- for( j=1; j<=n; j++)
- if(i!=j)
- A[i][j]=INT_MAX;
- while(fin>>i>>j>>c)
- A[i][j]=c;
- for( i=1; i<=n; i++)
- {
- D[i]=A[v][i];
- if(D[i]!=INT_MAX)
- T[i]=v;
- }
- S[v]=1;
- for( i=1; i<n; i++)
- {
- int minim=INT_MAX;
- for(j=1; j<=n; j++)
- if(S[j]==0 && D[j]<minim)
- {
- minim=D[j];
- x=j;
- }
- for(j=1; j<=n; j++)
- {
- if(S[j]==0 && D[j]>D[x]+A[x][j])
- {
- D[j]=D[x]+A[x][j];
- T[j]=x;
- }
- }
- S[x]=1;
- }
- for(i=1; i<=n; i++)
- if(D[i]<INT_MAX)
- fout<<D[i] << " ";
- else
- fout<< "-1";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement