Pagini recente » Cod sursa (job #965118) | Cod sursa (job #1714701) | Cod sursa (job #1434432) | Cod sursa (job #530396) | Cod sursa (job #1576641)
#include <fstream>
#include <vector>
#define INF INT_MAX/2-1
using namespace std;
struct nod{
bool vis;
nod* t;
int dst;
vector< pair<int, int> > v;
};
int main()
{
ifstream in("in.txt");
int n, m;
in>>n>>m;
nod w[5000]={false, NULL, INF};
for(int i=0;i<m;i++){
int a, b, d;
in>>a>>b>>d;
w[a].dst=INF;
w[b].dst=INF;
w[a].vis=false;
w[b].vis=false;
w[a].v.push_back(make_pair(b, d));
w[b].v.push_back(make_pair(a, d));
}
int crt=1;
bool f=true;
w[crt].dst=0;
while(f){
for(int i=0;i<w[crt].v.size();i++){
if(w[crt].v[i].second+w[crt].dst<w[w[crt].v[i].first].dst){
w[w[crt].v[i].first].dst=w[crt].v[i].second+w[crt].dst;
w[w[crt].v[i].first].t=&w[crt];
}
}
w[crt].vis=true;
pair<int, int> minim=make_pair(0, INF);
for(int i=1;i<=n;i++){
if(w[i].vis==false&&w[i].dst<minim.second){
minim=make_pair(i, w[crt].v[i].second);
}
}
crt=minim.first;
if(minim.first==0)f=false;
}
ofstream out("out.txt");
for(int i=2;i<=n;i++){
out<<w[i].dst<<" ";
}
return 0;
}