Cod sursa(job #610793)

Utilizator okros_alexandruOkros Alexandru okros_alexandru Data 29 august 2011 12:09:53
Problema Sate Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<fstream>
#include<vector>
using namespace std;
vector <short> v[30010];
vector <short> d[30010];
short coada[100100];
int n,nr,x,y,dist[100100];
bool viz[30010];
void citire()
{
	int i,m,a,b,c;
	ifstream in("sate.in");
	in>>n>>m>>x>>y;
	for(i=0;i<m;i++)
		{in>>a>>b>>c;
		v[a].push_back(b);
		d[a].push_back(c);
		v[b].push_back(a);
		d[b].push_back(c);
		}
	in.close();
}
int BFS()
{
	int i,j,m,nod,vecin,lung;
	for(i=1;i<nr;i++)
		if(!viz[coada[i]])
		{nod=coada[i];
		viz[nod]++;
		m=v[nod].size();
		for(j=0;j<m;j++)
			{vecin=v[nod][j];
			lung=d[nod][j];
			if(vecin<nod) lung*=-1;
			coada[nr]=vecin;
			dist[nr]=dist[i]+lung;
			if(vecin==y)
				return dist[nr];
			else nr++;
			}
		}
	return 0;
}
int main()
{
	int w;
	citire();
	if(x>y) swap(x,y);
	coada[1]=x;nr=2;
	w=BFS();
	ofstream out("sate.out");
	out<<w<<'\n';
	out.close();
	return 0;
}