Pagini recente » Cod sursa (job #2240964) | Cod sursa (job #649480) | Cod sursa (job #1967031) | Cod sursa (job #1831015) | Cod sursa (job #987806)
Cod sursa(job #987806)
using namespace std;
#include<fstream>
#include<vector>
ifstream eu("dijkstra.in");
ofstream tu("dijkstra.out");
#define Nmax 50005
# define oo 1<<30
vector< pair <int , int> > G[Nmax];
int D[Nmax],S[Nmax],N,M;
void read()
{
eu>>N;
eu>>M;
int a,b,c;
for(int i=1;i<=M;i++)
{
eu>>a>>b>>c;
G[a].push_back(make_pair(b,c));
}
}
void solve()
{
vector< pair <int,int> > :: iterator it;
int poz,min;
for(int i=2;i<=N;i++)
D[i]=oo;
for(int j=1;j<=N-1;j++)
{
min=oo;
poz=1;
for(int i=2;i<=N;i++)
if(D[i]<min&&S[i]!=1)
{
min=D[i];
poz=i;
}
S[poz]=1;
for(it=G[poz].begin();it!=G[poz].end();it++)
if(D[it->first]>D[poz]+it->second)
D[it->first]=D[poz]+it->second;
}
}
void print()
{
for(int i=2;i<=N;i++)
if(D[i]==oo)
tu<<0<<" ";
else
tu<<D[i]<<" ";
}
int main()
{
read();
solve();
print();
return 0;
}