Pagini recente » Cod sursa (job #1496269) | Cod sursa (job #1340098) | Cod sursa (job #2807037) | Cod sursa (job #766907) | Cod sursa (job #2051577)
#include<fstream>
#include<vector>
using namespace std;
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
const int oo=2000000000,nmax=50000;
int n,m,d[nmax+5],viz[nmax+5];
vector <pair<int,int> > v[nmax+5];
void citire ()
{
int x,y,i,cost;
in>>n>>m;
for(i=1;i<=m;i++)
{
in>>x>>y>>cost;
v[x].push_back(make_pair(y,cost));
}
}
void dijkstra()
{
int i,k;
for(i=2;i<=n;i++)
d[i]=oo;
for(k=1;k<=n;k++)
{
int minim=oo,nod;
for(i=1;i<=n;i++)
{
if(viz[i]==0 && d[i]<minim)
{
minim=d[i];
nod=i;
}
}
viz[nod]=1;
for(i=0;i<v[nod].size();i++)
{
int vecin=v[nod][i].first,cost=v[nod][i].second;
d[vecin]=min(d[vecin],d[nod]+cost);
}
}
}
void afisare()
{
int i;
for(i=2;i<=n;i++)
{
if(d[i]==oo)
d[i]=0;
out<<d[i]<<" ";
}
}
int main()
{
citire();
dijkstra();
afisare();
return 0;
}