Cod sursa(job #1814792)

Utilizator Garen456Paun Tudor Garen456 Data 24 noiembrie 2016 15:59:27
Problema Sate Scor 15
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>
#include <queue>
#define nmax 301
using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");
int n,m,x,y,a[nmax][nmax];
int viz[nmax];
void Citire()
{fin>>n>>m>>x>>y;
 int l,o,d;
 while(fin>>l>>o>>d) a[l][o]=a[o][l]=d;
}
void BFS(int u)
{ queue <int> c,d;
  int v,i,h;
  c.push(u); viz[u]=1;
  v=c.front(); c.pop();
   for(i=1;i<=n;i++)
        if(a[i][v]>0 && viz[i]==0)
      { c.push(i); d.push(a[i][v]);}

  while(!c.empty())
  { v=c.front(); h=d.front();
      c.pop(); d.pop(); viz[v]=1;
      if(v==y) {fout<<h; break;}
      for(i=1;i<=n;i++)
        if(a[i][v]>0 && viz[i]==0)
      { c.push(i);

                if(i>v) d.push(h+a[i][v]);
                else d.push(h-a[i][v]);
      }
  }
}
int main()
{   Citire();
    BFS(x);
    return 0;
}