Pagini recente » Cod sursa (job #1406863) | Cod sursa (job #2410235) | Cod sursa (job #3276186) | Cod sursa (job #288125) | Cod sursa (job #2403022)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
struct Edge{
int nod,cost;
};
int main()
{
int N,M,i,j;
in>>N>>M;
vector<vector<Edge>> edge(N+1);
for(i=1;i<=M;i++)
{
int x;
Edge y;
in>>x>>y.nod>>y.cost;
edge[x].push_back(y);
}
int inf=(N-1)*20000;
vector <int> d(N+1,inf);
vector <int> viz(N+1,0);
d[1]=0;
for(i=1;i<=N;i++)
{
int minim=inf+1;
int ind;
for(j=1;j<=N;j++)
{
if(d[j]<minim && viz[j]==0)
{
minim=d[j];
ind=j;
}
}
viz[ind]=1;
for(auto j: edge[ind])
if(d[j.nod]>d[ind]+j.cost)
d[j.nod]=d[ind]+j.cost;
}
for(i=2;i<=N;i++)
{
if(d[i]==inf)
out<<"0 ";
else
out<<d[i]<<" ";
}
}