Pagini recente » Cod sursa (job #1150967) | Cod sursa (job #606567) | Cod sursa (job #1230581) | Cod sursa (job #303300) | Cod sursa (job #1326771)
#include<bits/stdc++.h>
using namespace std;
struct cell
{
int nod,cost;
};
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
const int NMAX=50005;
int n,m,c[NMAX];
vector<cell>v[NMAX];
vector<cell>::iterator it;
queue<int>Q;
bitset<NMAX>viz;
inline void DIJKSTRA()
{
int i,aux;
for (i=2;i<=n;i++) c[i]=1<<30;
Q.push(1);
while (!Q.empty())
{
aux=Q.front();
Q.pop();
if (viz[aux]==0)
{
viz[aux]=1;
for (it=v[aux].begin();it!=v[aux].end();it++)
if (c[(*it).nod]>(c[aux]+(*it).cost))
{
c[(*it).nod]=c[aux]+(*it).cost;
viz[(*it).nod]=0;
Q.push((*it).nod);
}
}
}
}
int main()
{
int i,x;
cell k;
fin>>n>>m;
for (i=1;i<=m;i++)
{
fin>>x>>k.nod>>k.cost;
v[x].push_back(k);
swap(x,k.nod);
v[x].push_back(k);
}
DIJKSTRA();
for (i=2;i<=n;i++)
if (c[i]==(1<<30)) fout<<"0 ";
else fout<<c[i]<<" ";
fout<<"\n";
return 0;
}