Cod sursa(job #403833)

Utilizator alex@ndraAlexandra alex@ndra Data 25 februarie 2010 13:39:51
Problema Sate Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include<fstream>
#include<iostream>
#include<vector>
#include<stdio.h>

#define Nmax 30001

using namespace std;

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

int n,m, a, b;
int cost[Nmax],vizitat[Nmax],c[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);
	}
	
}

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

}
			  


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