Pagini recente » Cod sursa (job #1098054) | Cod sursa (job #2510759) | Cod sursa (job #1526775) | Cod sursa (job #268592) | Cod sursa (job #2027320)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
const int nmax=50001;
const int inf=(2<<25);
priority_queue<pair<int,int> >c;
vector<pair<int,int> >L[nmax];
int d[nmax],n,m;
bool viz[nmax];
///Complexitate (M * logN)
///log(n)-folosim priority_queue
inline void Solve()
{
for(int i=1;i<=n;i++)
d[i]=inf;
d[1]=0;
c.push({0,1});
while(!c.empty())
{
int x=c.top().second;
c.pop();
if(!viz[x])
{
viz[x]=true;
for(int i=0;i<L[x].size();i++)
{
int p=L[x][i].first;
int q=L[x][i].second;
if(d[p]>d[x]+q)
{
d[p]=d[x]+q;
c.push({-d[p],p});///distanta minima sa fie prima
}
}
}
}
for(int i=2;i<=n;i++)
if(d[i]==inf)
fout<<"0 ";
else fout<<d[i]<<" ";
fout<<"\n";
}
int main()
{
fin>>n>>m;
for(int i=1;i<=m;i++)
{
int nod1,nod2,cost;
fin>>nod1>>nod2>>cost;
L[nod1].push_back({nod2,cost});
}
Solve();
fin.close();
fout.close();
return 0;
}