Pagini recente » Cod sursa (job #2407060) | Cod sursa (job #1086495) | Cod sursa (job #162128) | Cod sursa (job #2310029) | Cod sursa (job #2861142)
#include <fstream>
#include <vector>
#include <queue>
#include <bitset>
#define cost first
#define nod second
#define oo (int)2e9+2
using namespace std;
ifstream fin ("dijkstra.in");
ofstream fout ("dijkstra.out");
vector < vector <pair<int, int> > > g;
priority_queue < pair<int, int> > q;
vector <int> d;
bitset <50005> viz;
int n, m;
void citire()
{
fin>>n>>m;
int x, y, c;
g = vector < vector < pair <int, int> > > (n+2);
d = vector <int> (n+2, oo);
for (int i=1; i<=n; ++i)
{
fin>>x>>y>>c;
g[x].push_back({c, y});
g[y].push_back({c, x});
}
fin.close();
}
void dijkstra(int st)
{
q.push({0, st});
d[st]=0;
while (!q.empty())
{
int x=q.top().nod;
q.pop();
if (viz[x]==0)
{
viz[x]=1;
for (auto y:g[x])
{
if (d[y.nod]>d[x]+y.cost)
{
d[y.nod]=d[x]+y.cost;
q.push({-d[y.nod], y.nod});
}
}
}
}
}
void afisare()
{
for (int i=2; i<=n; ++i)
if (d[i]==oo) fout<<"0 ";
else fout<<d[i]<<' ';
}
int main()
{
citire();
dijkstra(1);
afisare();
return 0;
}