Pagini recente » Profil adyzaho | Cod sursa (job #3191889) | Cod sursa (job #34577) | Cod sursa (job #2188748) | Cod sursa (job #2425762)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
struct graf
{
int a,b,cost;
}muchie[250005];
int distanta[50005];
int viz[50005];
int N,M;
int main()
{
fin>>N>>M;
distanta[1]=0;
viz[1]=1;
for(int i=2;i<=N;i++)
{
distanta[i]=2147483647;
}
priority_queue <pair<int,int>, vector<pair<int,int> >, greater< pair<int,int> > > dist;
for(int i=1;i<=M;i++)
{
fin>>muchie[i].a>>muchie[i].b>>muchie[i].cost;
if(muchie[i].a==1)
{
dist.push({muchie[i].cost,muchie[i].b});
distanta[muchie[i].b]=muchie[i].cost;
}
}
while(!dist.empty())
{
for(int i=1;i<=M;i++)
{
if(muchie[i].a == dist.top().second && distanta[muchie[i].b]>distanta[muchie[i].a]+muchie[i].cost && viz[muchie[i].a]==0)
{
viz[muchie[i].a]=1;
distanta[muchie[i].b]=distanta[muchie[i].a]+muchie[i].cost;
dist.push({distanta[muchie[i].b],muchie[i].b});
}
}
dist.pop();
}
for(int i=2;i<=N;i++)
{
if(distanta[i]!=2147483647)
fout<<distanta[i]<<" ";
else
fout<<"0 ";
}
return 0;
}