Pagini recente » Cod sursa (job #1713450) | Cod sursa (job #1721404) | Cod sursa (job #730384) | Cod sursa (job #1793256) | Cod sursa (job #795269)
Cod sursa(job #795269)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
const int maxn=50005;
const int inf=160000000;
vector < pair<int, int> >::iterator it;
vector < pair<int, int> > v[maxn];
queue<int> q;
int n, m, d[maxn];
bool block[maxn];
void read()
{
int a, b, c;
f>>n;
for(f>>m; m; --m)
{
f>>a>>b>>c;
v[a].push_back(make_pair(b, c));
}
}
void dijkstra()
{
int x;
q.push(1);
block[1]=1;
while(!q.empty())
{
x=q.front();
q.pop();
block[x]=0;
for(it=v[x].begin(); it!=v[x].end(); ++it)
if(d[it->first] > d[x] + it->second)
{
d[it->first] = d[x] + it->second;
if(!block[it->first])
{
q.push(it->first);
block[it->first]=0;
}
}
}
}
int main()
{
read();
for(int i=2; i<=n; ++i) d[i]=inf;
dijkstra();
for(int i=2; i<=n; ++i)
if(d[i]==inf) g<<0<<" ";
else g<<d[i]<<" ";
}