Pagini recente » Cod sursa (job #518734) | Cod sursa (job #2807167) | Cod sursa (job #2067198) | Cod sursa (job #2205788) | Cod sursa (job #2452660)
#include<cstdio>
#include<fstream>
#include<vector>
#include<queue>
#define INF 2000000000
using namespace std;
FILE *f=fopen("dijkstra.in","r");
ofstream g("dijkstra.out");
struct elem
{
int x,c;
bool operator < (const elem &a) const
{
return c>a.c;
}
};
vector<elem>a[50002];
priority_queue<elem>q;
int v[50002],viz[50002];
int main()
{
int n,m,i,x,y,z,l;
elem p;
fscanf(f,"%d%d",&n,&m);
for(i=1;i<=m;i++)
{
fscanf(f,"%d%d%d",&x,&y,&z);
a[x].push_back(elem{y,z});
}
for(i=2;i<=n;i++)
v[i]=INF;
p.x=1;
p.c=0;
q.push(p);
while(!q.empty())
{
p=q.top();
q.pop();
if(viz[p.x]==0)
{
viz[p.x]=1;
l=a[p.x].size();
for(i=0;i<l;i++)
if(v[a[p.x][i].x]>v[p.x]+a[p.x][i].c)
{
v[a[p.x][i].x]=v[p.x]+a[p.x][i].c;
q.push(elem{a[p.x][i].x,v[a[p.x][i].x]});
}
}
}
for(i=2;i<=n;i++)
if(v[i]!=INF)
g<<v[i]<<" ";
else
g<<0<<" ";
return 0;
}