Pagini recente » Cod sursa (job #880253) | Cod sursa (job #2769) | Cod sursa (job #2481333) | Cod sursa (job #2725599) | Cod sursa (job #1503524)
#include <cstdio>
#include <vector>
#include <queue>
#define nmax 1000
#define inf 0x3f3f3f3f
using namespace std;
vector <pair<int,int> > graph[nmax];
int d[nmax],n,m,x=1,t[nmax];
priority_queue <pair<int,int> > Q;
int main(){
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
scanf("%d %d ",&n,&m);
int a,b,c;
for(int i=1;i<=m;i++){
scanf("%d %d %d ",&a,&b,&c);
graph[a].push_back(make_pair(c,b));
graph[b].push_back(make_pair(c,a));
}
for(int i=1;i<=n;i++){
if(i!=x)d[i]=inf;
else d[i]=0;
Q.push(make_pair(-d[i],i));
}
int u;
while(!Q.empty()){
u=Q.top().second;
Q.pop();
for(vector <pair<int,int> > :: iterator it=graph[u].begin();it!=graph[u].end();++it){
if(d[u]+it->first<d[it->second]){
d[it->second]=d[u]+it->first;
t[it->second]=u;
}
}
}
for(int i=2;i<=n;i++)printf("%d ",d[i]);
return 0;
}