Pagini recente » Cod sursa (job #2520467) | Cod sursa (job #92778) | Cod sursa (job #68873) | Cod sursa (job #1133560) | Cod sursa (job #1978314)
#include<cstdio>
#include<vector>
#include<queue>
#define INF 0x3f3f3f3f
#define NMAX 50005
using namespace std;
vector < pair <int,int> > v[NMAX];
priority_queue < pair <int, int> > q;
int d[NMAX];
int main()
{
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
int n,m;
int nod1,nod2,cost;
int i,sze,fiu,c1,c2;
scanf("%d%d",&n,&m);
for(i=1; i<=m; ++i)
{
scanf("%d%d%d",&nod1,&nod2,&cost);
v[nod1].push_back(make_pair(cost,nod2));
}
for(i=2; i<=n; ++i)
d[i]=INF;
pair <int,int > temp;
temp.second=1;
temp.first=0;
q.push(temp);
while(!q.empty())
{
temp=q.top();
q.pop();
sze=v[temp.second].size();
c1=temp.first;
nod1=temp.second;
for(i=0; i<sze; ++i)
{
fiu=v[temp.second][i].second;
c2=c1+v[temp.second][i].first;
if(d[fiu]>c2)
{
d[fiu]=c2;
q.push(make_pair(c2,fiu));
}
}
}
for(int i = 2; i <= n; i++)
{
if(d[i] == INF)
printf("0 ");
else
printf("%d ",d[i]);
}
return 0;
}