Pagini recente » Cod sursa (job #2365734) | Cod sursa (job #822247) | Monitorul de evaluare | Cod sursa (job #557671) | Cod sursa (job #392818)
Cod sursa(job #392818)
#include<fstream>
#include<vector>
#define dmax 50001
#define inf 999999
using namespace std;
int n,m,inc,sfc,d[dmax];
vector<int> a[50001];
vector<int> cost[50001];
vector<int> q;
int main()
{
int i,j,x,y,c,elem;
ifstream fin("bellmanford.in");
fin>>n>>m;
for (i=1; i<=m; i++)
{
fin>>x>>y>>c;
a[x].push_back(y);
cost[x].push_back(c);
}
inc=0; sfc=1;
q.push_back(1); q.push_back(1);
for (i=2; i<=n; i++)
d[i]=inf;
while (inc<=sfc)
{
inc++; elem=q[inc];
for (i=0; i<a[elem].size(); i++)
if (d[a[elem][i]] > d[elem] + cost[elem][i])
{
d[a[elem][i]]= d[elem] + cost[elem][i];
sfc++;
q.push_back(a[elem][i]);
}
}
ofstream fout("bellmanford.out");
for (i=2; i<=n; i++)
fout<<d[i]<<" ";
fin.close();
fout.close();
return 0;
}