Pagini recente » Cod sursa (job #2632176) | Cod sursa (job #745048) | Cod sursa (job #680031) | Cod sursa (job #902849) | Cod sursa (job #2465660)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
vector < pair <int, int> > L[30001];
queue <int> c;
int n, x, y, m,Viz[30001],D[30001];
void Citire()
{ int i,j,o,d;
f>>n>>m>>x>>y;
for(o=1;o<=m;o++)
{ f>>i>>j>>d;
L[i].push_back(make_pair(j,d));
L[j].push_back(make_pair(i,d));
}
}
/* void DFS(int nod)
{ Viz[nod]=1;
int vec,o,dist;
for(o=0;o<L[nod].size();o++)
{ vec=L[nod][o].first;
dist=L[nod][o].second;
if(Viz[vec]==0)
{ if(nod<vec)
total=total+dist;
else total=total-dist;
DFS(vec);
break;
}
}
} */
void BFS()
{ int i, vec, nod,dist;
Viz[x]=1;
c.push(x);
while(!c.empty())
{ nod=c.front(); c.pop();
for(i=0;i<L[nod].size();i++)
{ vec=L[nod][i].first;
dist=L[nod][i].second;
if(Viz[vec]==0)
{ if(nod<vec)
D[vec]=D[nod]+dist;
else D[vec]=D[nod]-dist;
c.push(vec);
Viz[vec]=1;
if(vec==y)
return ;
}
}
}
}
int main()
{
Citire();
BFS();
g<<D[y];
f.close();
return 0;
}