Pagini recente » Cod sursa (job #2477069) | Cod sursa (job #963506) | Profil Rubinu | Rating Dicu Madalina (mada_mady) | Cod sursa (job #778856)
Cod sursa(job #778856)
#include <fstream>
#include <vector>
using namespace std;
#define pb push_back
#define mp make_pair
#define to first
#define cost second
vector<pair<int, int> > G[30010];
int N, M, X, Y, A, B, C, used[30010];
void DFS(int start, int dist);
int main()
{
ifstream in("sate.in");
ofstream out("sate.out");
int i;
in >> N >> M >> X >> Y;
for(i = 1; i <= M; i++)
{
in >> A >> B >> C;
G[A].pb(mp(B, C));
G[B].pb(mp(A, C));
}
DFS(X, 0);
return 0;
}
void DFS(int start, int dist)
{
if(start == Y)
{
out << dist << " ";
exit(0);
}
used[start] = 1;
vector<pair<int, int> > :: iterator it;
for(it = G[start].begin(); it != G[start].end(); ++ it)
{
if(!used[it -> to])
{
if(it -> to < start)
{
dist -= it -> cost;
DFS(it -> to, dist);
dist += it -> cost;
}else
{
if(it -> to > start)
{
dist += it -> cost;
DFS(it -> to, dist);
dist -= it -> cost;
}
}
}
}
}