Pagini recente » Cod sursa (job #2676941) | Cod sursa (job #2630108) | Cod sursa (job #2656464) | Cod sursa (job #2651341) | Cod sursa (job #2816600)
#include <iostream>
#include <fstream>
#include <vector>
#define oo 1000000000
using namespace std;
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
//int h[103][103];
vector <pair <int, int> > h[50003];
int t[50003],d[50003];
bool v[50003];
int main()
{
int n,m=0,i,j,c,cmin,p,k,x,l;
in >> n >> x;
/*for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
h[i][j]=oo;
if(i==j)
h[i][j]=0;
}
}*/
while(in >> i >> j >> c)
{
m++;
//h[i][j]=c;
h[i].push_back({j,c});
}
for(i=1;i<=n;i++)
{
d[i]=oo;
t[i]=0;
v[i]=0;
}
d[x]=0;
for(i=0;i<n-1;i++)
{
cmin=oo;
for(j=1;j<=n;j++)
{
if(d[j]<cmin && !v[j])
{
cmin=d[j];
p=j;
}
}
v[p]=1;
l=h[p].size();
//for(k=0;k<l;k++)
/*{
if(d[h[p][k].first]>d[p]+h[p][k].second)
{
d[h[p][k].first]=d[p]+h[p][k].second;
t[h[p][k].first]=p;
}
}*/
for(pair <int, int> k:h[p])
{
if(d[k.first]>d[p]+k.second)
{
d[k.first]=d[p]+k.second;
t[k.first]=p;
}
}
}
for(i=1;i<=n;i++)
{
if(d[i]<oo)
out << d[i] << ' ';
else
out << 0 << ' ';
}
}