Cod sursa(job #694171)

Utilizator CBogdanCiobanu Bogdan CBogdan Data 27 februarie 2012 19:02:59
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include<cstdio>
#include<bitset>
#include<vector>
using namespace std;

int n,m,x,y,c,i,X,Y,sol;
vector<pair<int,int> > V[30010];
bitset<30010> viz;
void read(),solve(),dfs(int,int);

int main()
{
	read();
	solve();
	
	return 0;
}

void read()
{
	freopen("sate.in","r",stdin);
	freopen("sate.out","w",stdout);
	scanf("%d%d%d%d",&n,&m,&X,&Y);
	for(i=1;i<=m;i++)
	{
		scanf("%d%d%d",&x,&y,&c);
		V[x].push_back(make_pair(y,c));
		V[y].push_back(make_pair(x,-c));
	}
}

void solve()
{
	dfs(X,0);
	printf("%d\n",sol);
}

void dfs(int x,int dist)
{
	viz[x]=1;
	if(x==Y){sol=dist;return;}
	for(vector<pair<int,int> >::iterator it=V[x].begin();it!=V[x].end();it++)
	{
		y=it->first;
		c=it->second;
		if(viz[y]==0)
			dfs(y,dist+c);
	}
}