Pagini recente » Cod sursa (job #1232509) | Cod sursa (job #1674575) | Cod sursa (job #54542) | Cod sursa (job #119571) | Cod sursa (job #2398753)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");
const int NMax=50005;
const int oo = (1 << 30);
vector <pair <int,int> >a[NMax];
int N,M,dist[NMax];
bool in[NMax];
struct comp
{
bool operator()(int x, int y)
{
return dist[x]>dist[y];
}
};
priority_queue <int, vector<int>, comp> coada;
void citire()
{
fin >> N >> M;
for(int i=1;i<=M;i++)
{
int x,y,d;
fin >> x >> y >> d;
a[x].push_back(make_pair(y,d));
}
for(int i=1;i<=N;i++)
dist[i]=oo;
dist[1]=0;
coada.push(1);
in[1]=true;
}
void dijkstra()
{
int nod,vecin,lung;
while(!coada.empty())
{
nod=coada.top();
coada.pop();
in[nod]=false;
for(int i=0;i<a[nod].size();i++)
{
vecin=a[nod][i].first;
lung=a[nod][i].second;
if(dist[nod]+lung<dist[vecin])
{
dist[vecin]=dist[nod]+lung;
if(in[vecin]==false)
{
coada.push(vecin);
in[vecin]=true;
}
}
}
}
}
void afiseaza()
{
for(int i=2;i<=N;i++)
if(dist[i]==oo)
fout << "0 ";
else
fout << dist[i] << " ";
}
int main()
{
citire();
dijkstra();
afiseaza();
return 0;
}