Pagini recente » Cod sursa (job #1251098) | Cod sursa (job #869539) | Cod sursa (job #2314896) | Cod sursa (job #2206934) | Cod sursa (job #2106524)
#include <bits/stdc++.h>
#define INF 200000
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
struct graf
{
int nod,cost;
graf *leg;
};
struct qq
{
int d,t;
bool viz;
}v[50001];
graf *G[50001];
void add(int x,int y,int c)
{
graf *p=new graf;
p->nod=y;
p->cost=c;
p->leg=G[x];
G[x]=p;
}
int n,m;
void dijk()
{
for(int i=2;i<=n;i++)
v[i].d=INF;
for(int i=1;i<=n;i++)
{
int mini=INF,poz;
for(int j=1;j<=n;j++)
if(v[j].d<mini and !v[j].viz)
mini=v[j].d,poz=j;
v[poz].viz=true;
for(graf *p=G[poz];p;p=p->leg)
if(v[p->nod].d>v[poz].d+p->cost)
v[p->nod].d=v[poz].d+p->cost;
}
}
int main()
{
f>>n>>m;
int x,y,c;
for(int i=1;i<=m;i++)
{
f>>x>>y>>c;
add(x,y,c);
}
dijk();
for(int i=2;i<=n;i++)
if(v[i].d==INF)
g<<0<<' ';
else g<<v[i].d<<' ';
return 0;
}