Pagini recente » Cod sursa (job #2569838) | Cod sursa (job #49446) | Cod sursa (job #449562) | Cod sursa (job #925630) | Cod sursa (job #2350303)
#include <iostream>
#include <fstream>
#include <list>
#include <queue>
using namespace std;
const int nmax=50005;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int n,m,p;
list <int> adj[nmax];
list <int> cost[nmax];
queue <int> coada;
int dist[nmax];
bool incoada[nmax];
void bell(int source)
{
for(int i=1;i<=n;++i)
dist[i]=1<<30;
dist[source]=0;
incoada[source]=true;
coada.push(source);
while(!coada.empty())
{
int nod=coada.front();
coada.pop();
incoada[nod]=false;
list <int> :: iterator it,jt;
for(it=adj[nod].begin(),jt=cost[nod].begin();it!=adj[nod].end();++it,++jt)
{
int vec=*it;
int drum=*jt;
if(dist[vec]>dist[nod]+drum)
{
dist[vec]=dist[nod]+drum;
if(!incoada[vec])
{
coada.push(vec);
incoada[vec]=true;
}
}
}
}
for(int i=2;i<=n;++i)
if(dist[i]!=1<<30)
g<<dist[i]<<' ';
else
g<<0<<' ';
}
int main()
{
f>>n>>m;
while(m--)
{
int x,y,d;
f>>x>>y>>d;
adj[x].push_back(y);
cost[x].push_back(d);
}
bell(1);
return 0;
}