Cod sursa(job #403832)

Utilizator alex@ndraAlexandra alex@ndra Data 25 februarie 2010 13:36:16
Problema Sate Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include<fstream>
#include<iostream>
#include<vector>
#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;
	ifstream f("sate.in");
	   f>>n>>m>>a>>b;
	 
	for(i=1;i<=m;i++)
	{
		f>>x>>y>>km;
		G[x].push_back(y);
		G[y].push_back(x);
		D[x].push_back(km);
		D[y].push_back(-km);
	}
	
	f.close();
}

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(/*!vizitat[sat]*/cost[sat]==0)
		  {
			  ls++;
			  c[ls]=sat;
			  //vizitat[sat]=1;
			  cost[sat]=cost[c[li]]+D[c[li]][i];
		
			  
			  
		  }
	   }
		li++;
	}

}
			  


int main()
{
	citire();
	bfs(a);
	
   ofstream g("sate.out");
       g<<cost[b]-1;
	g.close();
	
return 0;
}