Pagini recente » Cod sursa (job #117191) | Cod sursa (job #1823099) | Cod sursa (job #1783610) | Cod sursa (job #918240) | Cod sursa (job #2963279)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
typedef pair<int,int> pii;
int n,m,dist[50005];
vector<pii> muchii[50005];
bool use[50005];
void bfs()
{
for(int i=2;i<=n;i++)
dist[i]=1e9+5;
set<pii> coada;
coada.insert({dist[1],1});
use[1]=1;
while(!coada.empty())
{
int nod=(*coada.begin()).second;
use[nod]=1;
coada.erase(coada.begin());
for(int i=0;i<muchii[nod].size();i++)
{
int fiu=muchii[nod][i].first;
int cost=muchii[nod][i].second;
if(dist[fiu]>dist[nod]+cost&&!use[fiu])
{
dist[fiu]=dist[nod]+cost;
coada.insert({dist[fiu],fiu});
}
}
}
}
int main()
{
ios_base::sync_with_stdio(false);
fin.tie(0);
fin>>n>>m;
for(int i=1;i<=m;i++)
{
int a,b,c;
fin>>a>>b>>c;
muchii[a].push_back({b,c});
}
bfs();
for(int i=2;i<=n;i++)
{
if(dist[i]>1e9)
fout<<0<<' ';
else
fout<<dist[i]<<' ';
}
return 0;
}