Pagini recente » Cod sursa (job #1433306) | Cod sursa (job #47009) | Cod sursa (job #2802297) | Cod sursa (job #2293020) | Cod sursa (job #1882162)
#include <bits/stdc++.h>
using namespace std;
#define RR 50000
//#define CC 250000
#define N 200
#define oo 1000000000
#define pp pair<int,int>
int n,m,d[N],v[N],prev[N];
vector<pair<int,int> > arr[N];
pp P;
priority_queue<pp > Q;
int Dis(int s)
{
d[s] = 0;
//prev[s] = 1;
for (int i=0;i<n;i++)
{
if (i != s)
{
prev[i] = 0;
d[i] = oo;
}
// Q.push(make_pair(i,-d[i]));
}
Q.push(make_pair(0,0));
while (Q.size())
{
pp u = Q.top();
//cout << u.first<< endl << endl;
Q.pop();
if (!prev[u.second])
{
prev[u.second] = 1;
vector <pp> :: iterator it = arr[u.second].begin(),
sf = arr[u.second].end();
for (;it != sf;++it)
{
int alt = -u.first + (*it).second;
// printf("d init:%d %d %d %d\n",d[(*it).first],u.first,(*it).second,(*it).first);
if (alt < d[(*it).first])
{
d[(*it).first] = alt;
// prev[(*it).first] = u.first;
// cout << endl << "mp:" << (*it).first << endl;
Q.push(make_pair(-d[(*it).first],(*it).first));
}
}
}
}
return 1;
}
int main()
{
freopen("disjktra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
// cout << "da";
cin >> n;
cin >> m;
for (int i=0;i<m;i++)
{
int x,y,z;
cin >> x >> y >> z;
arr[x-1].push_back(make_pair(y-1,z));
}
Dis(0);
for(int i=1;i<n;i++)
if(d[i]==oo) cout<<"0 "; else cout<<d[i]<<' ';
return 0;
}