Cod sursa(job #761698)

Utilizator SebiSebiPirtoaca George Sebastian SebiSebi Data 27 iunie 2012 09:56:28
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
struct muchie {
	int cost,y;
};
vector <muchie> v[30001];
int l[30001],cost[30001],n,c[60001];
inline void bfs(int nod)
{
	int i,st,dr;
	for(i=1;i<=n;i++)
		cost[i]=-1;
	st=1;
	dr=1;
	cost[nod]=0;
	c[st]=nod;
	while(st<=dr) {
		for(i=0;i<=l[c[st]];i++) 
			if(cost[v[c[st]][i].y]==-1) {
				cost[v[c[st]][i].y]=cost[c[st]]+v[c[st]][i].cost;
				c[++dr]=v[c[st]][i].y;
			}
		st++;
	}
}
int main ()
{
	int m,i,start,sfarsit,x,aux;
	muchie d;
	ifstream f("sate.in");
	ofstream g("sate.out");
	f>>n>>m>>start>>sfarsit;
	for(i=1;i<=m;i++) {
		f>>x>>d.y>>d.cost;
		v[x].push_back(d);
		aux=x;
		x=d.y;
		d.y=aux;
		d.cost=-d.cost;
		v[x].push_back(d);
	}
	f.close();
	for(i=1;i<=n;i++)
		l[i]=v[i].size()-1;
	bfs(start);
	g<<cost[sfarsit];
	g.close();
	return 0;
}