Pagini recente » Cod sursa (job #2111091) | Cod sursa (job #2448331) | Cod sursa (job #1760778) | Cod sursa (job #1278068) | Cod sursa (job #2681663)
#include <fstream>
#include <queue>
#include <vector>
#define NMAX 50000
#define INF 1e8
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
struct ura
{
int nod,cost;
bool operator < (const ura &other)const
{
return cost>other.cost;
};
}aux;
int n,m;
vector <ura> adj[1+NMAX];
int Distanta[1+NMAX];
bool viz[1+NMAX];
void djikstra(int sursa)
{
for(int i=1;i<=n;i++){
Distanta[i]=INF;
viz[i]=false;
}
Distanta[sursa]=0;
priority_queue<ura>pq;
aux.nod=sursa;
aux.cost=0;
pq.push(aux);
while(!pq.empty())
{
ura u=pq.top();
pq.pop();
if(!viz[u.nod])
{
viz[u.nod]=true;
for(auto it=adj[u.nod].begin();it!=adj[u.nod].end();it++)
{
ura v=*it;
if(Distanta[v.nod]>Distanta[u.nod]+v.cost)
{
Distanta[v.nod]=Distanta[u.nod]+v.cost;
aux.nod=v.nod;
aux.cost=Distanta[v.nod];
pq.push(aux);
}
}
}
}
for(int i=2;i<=n;i++)
fout<<Distanta[i]<<' ';
}
int main()
{
fin>>n>>m;
for(int i=1;i<=m;i++)
{
int x,y,c;
fin>>x>>y>>c;
aux.nod=y;
aux.cost=c;
adj[x].push_back(aux);
}
djikstra(1);
return 0;
}