Cod sursa(job #674709)

Utilizator bogdan353Costea Bogdan bogdan353 Data 6 februarie 2012 17:40:36
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include<fstream>
#include<vector>
#include<queue>
using namespace std;

#define PB push_back
#define MP make_pair

bool v[30002];
int n,m,a,b,cost[30002];
vector< pair <int , int> > lista[30002];
queue <int> Q;

ofstream g("sate.out");
void graf(int p, int u)
{
	Q.push(p);
	v[p]=1;
	cost[p]=0;
	while(!Q.empty())
	{
	
		int nod=Q.front();
		for(unsigned int i=0;i<lista[nod].size();i++)
		{
			
			int nod2=lista[nod][i].first;
			int cost2=lista[nod][i].second;
			
			if(v[nod2]==1) continue;
			
			v[nod2]=1;
			Q.push(nod2);
			if(nod<nod2)
				cost[nod2]=cost2+cost[nod];
			else
				cost[nod2]=cost[nod]-cost2;
			
			if(nod2==u) return;
		}
		Q.pop();
	}
	
}
			
			
			


int main()
{
	ifstream f("sate.in");
	
	
	f>>n>>m>>a>>b;
	
	int x,y,z;
	
	for(int i=1;i<=m;i++)
	{
		f>>x>>y>>z;
		lista[x].PB( MP(y , z));
		lista[y].PB( MP(x , z));
	}
	graf(a,b);
	g<<cost[b];
}