Pagini recente » Cod sursa (job #1968869) | Cod sursa (job #2496352) | Cod sursa (job #444294) | Cod sursa (job #516044) | Cod sursa (job #1519356)
#include <iostream>
#include <fstream>
#define MAX_N 30001
#define MAX_M 100025
using namespace std;
struct lista
{
int nod,c;
lista* urm;
}*G[MAX_N];
int n,m,x,y,st[MAX_M],d[MAX_N],T[MAX_N];
bool use[MAX_N];
void BF(int x, int y)
{
bool ok=false;
use[x]=true;
int q,u;
q=u=1;
st[1]=x;
while(q<=u)
{
for(lista* p=G[st[q]];p;p=p->urm)
if(!use[p->nod])
{
use[p->nod]=true;
if(p->nod>st[q])
d[p->nod]=d[st[q]]+p->c;
else
d[p->nod]=d[st[q]]-p->c;
st[++u]=p->nod;
if(p->nod==y){ok=true;break;}
}
q++;
if(ok)break;
}
}
void adauga_muchie(lista*&p,int nod,int c)
{
lista* aux=new lista;
aux->nod=nod;
aux->c=c;
aux->urm=p;
p=aux;
}
void citeste()
{
ifstream f("sate.in");
f>>n>>m>>x>>y;
int a,b,c;
for(int i=1;i<=m;i++)
{
f>>a>>b>>c;
adauga_muchie(G[a],b,c);
adauga_muchie(G[b],a,c);
}
f.close();
}
int main()
{
citeste();
BF(x,y);
ofstream g("sate.out");
g<<d[y];
g.close();
return 0;
}