Pagini recente » Cod sursa (job #2287216) | Cod sursa (job #340767) | Cod sursa (job #2765936) | Cod sursa (job #1940305) | Cod sursa (job #900043)
Cod sursa(job #900043)
#include<stdio.h>
#include<vector>
#include<algorithm>
#include<queue>
#define mp make_pair
#define pii pair<int,int>
using namespace std;
FILE*in=fopen("dijkstra.in","r");
FILE*out=fopen("dijkstra.out","w");
int noduri,muchii,dist[50001];
priority_queue < pii ,vector< pii >, greater< pii > > q;
vector <pair<int,int> > v[50001];
int main()
{
fscanf(in,"%d%d",&noduri,&muchii);
for(int i=2;i<=noduri;++i)
dist[i]=(1<<30)-1;
for(int i=1;i<=muchii;++i)
{
int data1,data2,data3;
fscanf(in,"%d%d%d",&data1,&data2,&data3);
v[data1].push_back(mp(data2,data3));
v[data2].push_back(mp(data1,data3));
}
q.push(mp(1,0));
while(!q.empty())
{
pair<int,int> curent=q.top();
q.pop();
for(int i=0;i<(int)v[curent.first].size();++i)
{
if(dist[v[curent.first][i].first]>dist[curent.first]+v[curent.first][i].second)
{
dist[v[curent.first][i].first]=dist[curent.first]+v[curent.first][i].second;
q.push(mp(v[curent.first][i].first,dist[v[curent.first][i].first]));
}
}
}
for(int i=2;i<=noduri;++i)
if(dist[i])
fprintf(out,"%d ",dist[i]);
else
fprintf(out,"0 ");
fclose(in);
fclose(out);
return 0;
}