Pagini recente » Cod sursa (job #2790011) | Cod sursa (job #3311415) | Cod sursa (job #1262574) | Cod sursa (job #2813576) | Cod sursa (job #3324536)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("dijkstra.in");
ofstream cout("dijkstra.out");
const int NMax=50000, oo=1e9;
vector<pair<int,int>> g[NMax+5];
int n, m, d[NMax+5];
bool use[NMax+5];
void Read()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
int x, y, c;
cin>>x>>y>>c;
pair<int, int> p;
g[x].push_back(make_pair(y,c));
}
}
void Dijkstra()
{
for(int i=2;i<=n;i++)
d[i]=oo;
for(int i=1;i<=n;i++)
{
int mini=oo, nod;
for(int i=1;i<=n;i++)
{
if(d[i]<mini && use[i]==false)
{
mini=d[i];
nod=i;
}
}
use[nod]=true;
for(auto i:g[nod])
{
int vecin=i.first, cost=i.second;
d[vecin]=min(d[vecin], d[nod]+cost);
}
}
}
void Print()
{
for(int i=2;i<=n;i++)
if(d[i]==oo)d[i]=0;
for(int i=2;i<=n;i++)
cout<<d[i]<<' ';
}
int main()
{
Read();
Dijkstra();
Print();
return 0;
}