Pagini recente » Cod sursa (job #1790351) | Cod sursa (job #1659799) | Cod sursa (job #947206) | Cod sursa (job #2454756) | Cod sursa (job #3325339)
#include <bits/stdc++.h>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
const int INF=2000000000;
const int NMAX=50005;
vector<pair<int,int>> G[NMAX];
int D[NMAX];
bool vis[NMAX];
int N,M;
void dijkstra(int sursa) {
for(int i=1;i<=N;i++)
{
D[i]=INF;
vis[i]=false;
}
D[sursa]=0;
priority_queue<pair<int,int>> pq;
pq.push({0,sursa});
while(!pq.empty())
{
int nod=pq.top().second;
pq.pop();
if(vis[nod])
continue;
vis[nod]=true;
for(auto x:G[nod])
{
int vecin=x.first;
int cost=x.second;
if(D[nod]+cost<D[vecin])
{
D[vecin]=D[nod]+cost;
pq.push({-D[vecin],vecin});
}
}
}
}
int main()
{ int x,y,c;
f>>N>>M;
for(int i=0;i<M;i++)
{
f>>x>>y>>c;
G[x].push_back({y,c});
}
dijkstra(1);
for(int i=2;i<=N;i++)
{
if(D[i]==INF)
g<<0<<" ";
else
g<<D[i]<<" ";
}
g<<"\n";
return 0;
}