Pagini recente » Rating Parau Vlad (vladparau) | Cod sursa (job #2208548) | Cod sursa (job #1887235) | Cod sursa (job #331442) | Cod sursa (job #1336946)
#include <iostream>
#include <fstream>
#include <vector>
#define oo 240000000
#define N 10000
using namespace std;
ifstream f("dikjstra.in");
ofstream g("dikjstra.out");
int n,m;
vector< pair<int,int> > graf[N];
int d[N],viz[N];
void citeste()
{
f>>n>>m;
int k,x,y;
pair <int,int> p;
for(int i=1;i<=n;i++){
f>>x>>y>>k;
p=make_pair(y,k);
graf[x].push_back(p);
}
}
void dikjstra()
{
unsigned int i,j,vecin,cost;
for(i=2;i<=n;i++) d[i]=oo;
for(i=1;i<=n;i++){
int minv=oo,nod;
for(j=1;j<=n;j++)
if(d[j]<minv&&viz[j]==0) minv=d[j],nod=j;
viz[nod]=1;
for(j=0;j<graf[nod].size();j++){
vecin=graf[nod][j].first,cost=graf[nod][j].second;
if(d[nod]+cost<d[vecin]) d[vecin]=d[nod]+cost;
}
}
}
void afiseaza()
{
int i;
for(i=2;i<=n;i++)
if(d[i]==oo) d[i]=0;
for(i=2;i<=n;i++) g<<d[i]<<' ';
g<<'\n';
}
int main()
{
citeste();
dikjstra();
afiseaza();
return 0;
}