Pagini recente » Cod sursa (job #2850292) | Cod sursa (job #1467838) | Cod sursa (job #99198) | Cod sursa (job #385389) | Cod sursa (job #761994)
Cod sursa(job #761994)
#include<fstream>
#include<stdlib.h>
#include<stdio.h>
#include<vector>
#define nmax 30004
using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");
int i, j ,n , m , x, y, k ;
bool viz[nmax];
int c[nmax *100];
vector <pair <int,int> > G[nmax];
int dis[nmax];
int bfs(int x,int y)
{
int i, j;
int p = 1;
int u = 1;
if(x>y)
swap(x,y);
viz[x] = true;
c[1] = x;
while(p<=u){
for(i = 0, x = c[p]; i < G[x].size(); i++)
{
if(viz[G[x][i].first] == false )
{
viz[c[++u] = G[x][i].first] = true;
dis[G[x][i].first] = dis[x] + G[x][i].second;
if(dis[y])
return dis[y];
}
}
++p;
}
return dis[y] ;
}
void read()
{
int i,j , d;
fin >> n >> m >> x >>y;
for(k =1; k <= m ;k++)
{
fin >> i >> j >>d;
G[i].push_back(make_pair(j,d));
G[j].push_back(make_pair(i,-d));
}
fout << bfs(x,y);
}
int main()
{
read();
fin.close();
return 0;
}