Pagini recente » Cod sursa (job #1141749) | Cod sursa (job #2162262) | Cod sursa (job #1683629) | Cod sursa (job #2027412) | Cod sursa (job #1414878)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <bitset>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
#define MAX_N 50005
vector <int> G[MAX_N], C[MAX_N];
queue <int> Q;
bitset <MAX_N> viz;
int d[MAX_N],N,M;
void bfs(int nod)
{
while(Q.empty()==0)
{
nod=Q.front();
for(int i=0;i<G[nod].size();i++)
{
if( viz[G[nod][i]]==0 && d[G[nod][i]]>(d[nod]+C[nod][i]) )
{
d[G[nod][i]]=d[nod]+C[nod][i];
Q.push(G[nod][i]);
viz[G[nod][i]]==1;
}
}
viz[nod]=0;
Q.pop();
}
}
int main()
{
f>>N>>M;
int a,b,cost;
for(int i=1;i<=M;i++)
{
f>>a>>b>>cost;
G[a].push_back(b);
G[b].push_back(a);
C[a].push_back(cost);
C[b].push_back(cost);
}
Q.push(1); viz[1]=1; d[1]=0;
for(int i=2;i<=N;i++)
d[i]=1000*i+5;
bfs(1);
for(int i=2;i<=N;i++)
g<<d[i]<<" ";
return 0;
}