Pagini recente » Cod sursa (job #2958356) | Cod sursa (job #1963202) | Cod sursa (job #174679) | Cod sursa (job #898291) | Cod sursa (job #2381072)
//#include <cstdio>
#include <fstream>
#include <vector>
#include <algorithm>
#define NMAX 30007
using namespace std;
ifstream cin("sate.in");
ofstream cout("sate.out");
FILE *fin, *fout;
int n, m, x, y, dr = 1, sze, a;
struct muchie
{
int vec;
int cost;
} tmp;
vector<muchie> adj[NMAX];
struct mqueue
{
int nod;
int sum;
int tata;
} q[4*NMAX];
void citire()
{
cin >> n >> m >>y;
for(int i = 1; i<= m; ++i)
{
cin >> a >> tmp.vec >> tmp.cost;
adj[a].push_back(tmp);
swap(a, tmp.vec);
adj[a].push_back(tmp);
}
}
void bfs()
{
q[dr].nod = x;
q[dr].tata = -1;
dr++;
for(int i = 1; i< dr; ++i)
{
if(q[i].nod == y)
{
cout << q[i].sum;
break;
}
sze = adj[q[i].nod].size();
for(int j = 0; j< sze; ++j)
{
if(adj[q[i].nod][j].vec == q[i].tata) continue;
q[dr].nod = adj[q[i].nod][j].vec;
q[dr].tata = i;
if(q[dr].nod < q[i].nod) q[dr].sum = q[i].sum - adj[q[i].nod][j].cost;
else q[dr].sum = q[i].sum + adj[q[i].nod][j].cost;
dr++;
}
}
}
int main()
{
//fin = freopen("sate.in", "r", stdin);
//fout = freopen("sate.out", "w", stdout);
citire();
bfs();
fclose(fin);
fclose(fout);
return 0;
}