Cod sursa(job #501095)

Utilizator unknownliviuMaria Liviu Valentin unknownliviu Data 14 noiembrie 2010 12:33:15
Problema Sate Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include<vector>
#include<fstream>
using namespace std;
ifstream in("sate.in");
ofstream out("sate.out");
const int N=30050;
vector<int> d[N];
vector<short int>a[N];
int n,m,x,y;
int dist[N],c[N];
bool viz[N];
void read()
{
	int z,t,u;
	in>>n>>m>>x>>y;
	for(int i=1;i<=m;i++)
	{
		in>>z>>t>>u;
		d[z].push_back(u);
		a[z].push_back(t);
		d[t].push_back(u);
		a[t].push_back(z);
	}
}
void bfs(int x)
{
	int p,u,i,r,q;
	p=u=0;
	c[p]=x;
	while(p<=u)
	{
		r=c[p];
		for(i=0;i<a[r].size();i++)
		{
			q=a[r][i];
			if(!viz[q])
			{
				if(r<=q)
					dist[q]=dist[r]+d[r][i];
				else
					dist[q]=dist[r]-d[r][i];
				viz[q]=1;
				if(q==y)
					return;
				c[++u]=q;
			}
		}
		p++;
	}
}
int main()
{
	read();
	bfs(x);
	out<<dist[y];
	return 0;
}