Pagini recente » Cod sursa (job #2456725) | Cod sursa (job #1867046) | Cod sursa (job #1776513) | Cod sursa (job #2073197) | Cod sursa (job #1041118)
#include<fstream>
#include<vector>
#include<queue>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
struct nod{
int vf,l;};
vector <nod> v[50003];
int d[50003],n,m;
void citire()
{
f>>n>>m;
for(int i=1;i<=m;i++)
{
int a,b,c;
f>>a>>b>>c;
nod y;
y.vf=b;
y.l=c;
v[a].push_back(y);
}
d[1]=0;
for(int i=2;i<=n;i++)
d[i]=2000000000;
}
void bfs (int x)
{
int eq[50003]; nod y;
queue<int>q;
q.push(x);
eq[x]=1;
while(!q.empty() )
{
x=q.front();
q.pop();
eq[x]=0;
for(int i=0;i<v[x].size();i++)
{
y=v[x][i];
if(d[y.vf]>d[x]+y.l){
d[y.vf]=d[x]+y.l;
if(eq[y.vf]==0)
{q.push(y.vf);
eq[y.vf]=1; }
}
}
}
}
int main()
{
citire();
bfs(1);
for(int i=2;i<=n;i++)
if(d[i]!=2000000000)
g<<d[i]<<' ';
else
g<<0<<' ';
return 0;
}