Pagini recente » Cod sursa (job #2303437) | Cod sursa (job #2660028) | Cod sursa (job #2338210) | Cod sursa (job #1540915) | Cod sursa (job #1978321)
#include<cstdio>
#include<vector>
#include<queue>
#include<utility>
using namespace std;
const int NMAX =50000;
const int INF = 0x3f3f3f3f;
typedef pair < int, int > ii;
typedef vector< int > vi;
typedef vector< ii > vii;
vector<ii> G[NMAX + 5];
int main() {
freopen("dijkstra.in" ,"r",stdin );
freopen("dijkstra.out","w",stdout);
int n,m,s,u,v,w;
int i;
scanf("%d%d",&n,&m);
s=1;
for(i=1; i<=m; ++i) {
scanf("%d%d%d",&u,&v,&w);
G[u].push_back(ii(v,w));
}
vi dist(n+1,INF);
dist[s]=0;
priority_queue<ii,vector<ii>,greater<ii> > pq;
pq.push(ii(0,s));
while(!pq.empty()) {
ii front=pq.top();
pq.pop();
int d = front.first;
u = front.second;
if( d > dist[u])
continue;
for(int j=0 ; j < (int)G[u].size() ; ++j) {
int v = G[u][j].first,duv = G[u][j].second;
if(dist[u]+ duv < dist [v]) {
dist[v]=dist[u] + duv;
pq.push(ii(dist[v],v));
}
}
}
for( i=2; i<=n; ++i) {
if(dist[i]==INF)
printf("0 ");
else
printf("%d ",dist[i]);
}
return 0;
}