Cod sursa(job #403842)

Utilizator alex@ndraAlexandra alex@ndra Data 25 februarie 2010 13:58:19
Problema Sate Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb

#include<vector>
#include<stdio.h>

#define Nmax 30001

using namespace std;

vector<int> G[Nmax],D[Nmax];

int n,m, a, b;
int vizitat[Nmax],c[Nmax];
long cost[Nmax];
void citire()
{
	int i, km, x, y;
	freopen("sate.in","r",stdin);
	   scanf("%d%d%d%d",&n,&m,&a,&b);
	 
	for(i=1;i<=m;i++)
	{
		scanf("%d%d%d",&x,&y,&km);
		G[x].push_back(y);
		G[y].push_back(x);
		D[x].push_back(km);
		D[y].push_back(-km);
	}
	fclose(stdin);
}

void bfs(int nod)
{
	int li,ls,i,vecini,sat,cli;
	li=1;ls=1;
	c[li]=nod;
  cost[nod]=1;
	
	
	while(c[li]!=b)
	{cli=c[li];
	  vecini=G[cli].size();
	  
	   for(i=0;i<vecini;i++)
	   { 
		   sat=G[cli][i]; 
		  
		   if(!cost[sat])
		  {
			  ls++;
			  c[ls]=sat;
			  cost[sat]=cost[cli]+D[cli][i];
		  }
	   }
		li++;
	}

}

int main()
{
	citire();
	bfs(a);
	
   freopen("sate.out","w",stdout);
       printf("%d",cost[b]-1);
	
return 0;
}