Pagini recente » Cod sursa (job #1218014) | Cod sursa (job #2868724) | Cod sursa (job #542655) | Cod sursa (job #2836314) | Cod sursa (job #674124)
Cod sursa(job #674124)
#include <fstream>
#include <vector>
#define NMAx 30100
#define pb push_back
using namespace std;
vector <int> G[NMAx],D[NMAx];
int n,nr,X,Y,dist[NMAx],deque[NMAx];
bool viz[NMAx];
void citire() {
int i,m,x,y,c;
ifstream in("sate.in");
in>>n>>m>>X>>Y;
for(i=0;i<m;i++)
{in>>x>>y>>c;
if(x>y) c=-c;
G[x].pb(y);
G[y].pb(x);
D[x].pb(c);
D[y].pb(-c);
}
in.close();
}
int BFS()
{
int i,j,m,nod,vecin,lung;
if(X>Y)
swap(X,Y);
deque[1]=X;
nr=1;
for(i=1;i<=nr;i++) {
nod=deque[i];
for(j=0;j<G[nod].size();j++) {
vecin=G[nod][j];
if(!viz[vecin]) {
viz[vecin]=1;
deque[++nr]=vecin;
dist[vecin]=dist[nod]+D[nod][j];
if(vecin==Y)
return dist[vecin];
}
}
}
return 0;
}
int main()
{
citire();
ofstream out("sate.out");
out<<BFS()<<'\n';
out.close();
return 0;
}