Pagini recente » Rating Denisa Nastasa (denisa0816) | Rating Antonescu Ionut-Andrei (antrei) | Cod sursa (job #133436) | Cod sursa (job #2266150) | Cod sursa (job #1814792)
#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;
}