Pagini recente » Cod sursa (job #753204) | Cod sursa (job #1951800) | Cod sursa (job #3194408) | Cod sursa (job #3127336) | Cod sursa (job #2345111)
#include <bits/stdc++.h>
using namespace std;
int s,d[101],pred[101],n,viz[101];
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
vector <int>v[101],l[101];
void citire()
{fin>>n>>s;
int x,y,p;
while(fin>>x>>y>>p)
{v[x].push_back(y);
l[x].push_back(p);
}
}
priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > >h;
void disktra()
{int i;
for(i=1;i<=n;i++)
d[i]=(1<<30);
d[s]=0;
h.push(make_pair(0,s));
int nod,w;
while(!h.empty())
{nod=h.top().second;
h.pop();
if(viz[nod])continue;
else viz[nod]=1;
for(i=0;i<v[nod].size();i++)
{w=v[nod][i];
if(d[w]>d[nod]+l[nod][i])
{d[w]=d[nod]+l[nod][i];
pred[w]=nod;
h.push(make_pair(d[w],w));
}
}
}
for(i=1;i<=n;i++)
if(d[i]!=(1<<30))fout<<d[i]<<" ";
else fout<<-1<<" ";
}
int main()
{ citire();
disktra();;
return 0;
}