Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- ifstream fin("dijkstra.in");
- ofstream fout("dijkstra.out");
- int d[101], viz[101], pred[101], a[101][101];
- vector <int> L[101];
- int n, s;
- void Citire()
- { int x, y, c, i;
- fin >> n >> s;
- while( fin >> x >> y >> c)
- {
- L[x].push_back(y);
- a[x][y] = c;
- }
- for(i = 1; i <= n; i++)
- d[i] = 100005;
- d[s] = 0;
- }
- int Minim()
- {
- int minim = 100005, j, k;
- for(j = 1; j <= n; j++)
- if(viz[j] == 0 && minim > d[j])
- minim = d[j], k = j;
- return k;
- }
- void Djikstra()
- {
- int i, j, p;
- for(i = 1 ;i < n; i++)
- {
- p = Minim();
- if(d[p] == 100005) break;
- else
- {
- viz[p] = 1;
- for(j = 0; j < L[p].size(); j++)
- if(d[L[p][j]] > d[p] + a[p][L[p][j]])
- {
- d[L[p][j]] = d[p] + a[p][L[p][j]];
- pred[L[p][j]] = p;
- }
- }
- }
- for(i = 1; i <= n; i++)
- if(i == s) fout<<0<<" ";
- else if(d[i] == 100005) fout << -1 <<" ";
- else if(d[i] < 100005) fout << d[i] <<" ";
- }
- int main()
- {
- Citire();
- Djikstra();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement