Cod sursa(job #67653)

Utilizator gabitzish1Gabriel Bitis gabitzish1 Data 25 iunie 2007 13:02:23
Problema Sate Scor 0
Compilator cpp Status done
Runda preONI 2007, Runda Finala, Clasa a 9-a si gimnaziu Marime 0.94 kb
#include<stdio.h>

long long m, suma;
int n, x, y;

typedef struct
{
  int i, j;
  long d;
} distanta;

distanta v[1000];

void citire()
{
  freopen("sate.in","r",stdin);
  scanf("%d %lld %d %d", &n, &m, &x, &y);
  for (long i=1; i<=m; i++)
    scanf("%d %d %ld",&v[i].i, &v[i].j, &v[i].d);
}

void parcurgere()
{
  long long i, p, pr, ul;
  for (i=1; i<=m; i++)
    if (v[i].i==x || v[i].j==x)
      { p=i; break;}
  if (v[p].i==x) { pr=v[p].i; ul=v[p].j;}
      else { pr=v[p].j; ul=v[p].i;}
  if (pr<ul) suma+=v[p].d;
	else suma-=v[p].d;
  while (ul!=y)
    {
      v[p].i=v[p].j=0;
      for (i=1; i<=m; i++)
	if (v[i].i==ul || v[i].j==ul)
	  { p=i; break;}
      pr=ul;
      if (v[p].i==pr) ul=v[p].j;
	else ul=v[p].i;
      if (pr<ul) suma+=v[p].d;
	else suma-=v[p].d;
    }
  freopen("sate.out","w",stdout);
  printf("%lld",suma);
}






int main()
{
  citire();
  parcurgere();
  return 0;
}