Pagini recente » Cod sursa (job #385033) | Cod sursa (job #539819) | Cod sursa (job #1100139) | Cod sursa (job #3150005) | Cod sursa (job #391825)
Cod sursa(job #391825)
#include<fstream>
using namespace std;
int v[30005];
struct nod{
int info;
int kil;
nod *next;};
nod *g[30005];
void adauga(int a,int b,int c);
int y;
int main()
{
int n,m,x;
ifstream fin("sate.in");
ofstream fout("sate.out");
fin>>n>>m>>x>>y;
int i;
//fout<<x<<" "<<y;
for(i=1;i<=m;i++)
{
int a,b,c;
fin>>a>>b>>c;
adauga(a,b,c);
adauga(b,a,c);
}
nod *st,*dr;
st=new nod;
st->info=x;
st->kil=0;
v[x]=1;
st->next=NULL;
dr=st;
int pp=0;
while(st!=NULL && pp==0)
{
int k=st->info;
//fout<<k<<endl;
for(nod *p=g[k];p;p=p->next)
if(v[p->info]==0)
{
nod *t;
t->info=p->info;
t->next=NULL;
if(k<p->info)
v[p->info]=v[k]+p->kil;
else
v[p->info]=v[k]-p->kil;
if(p->info==y)
pp=1;
dr->next=t;
dr=t;
}
nod *u;
u=st;
st=st->next;
delete u;
}
//ofstream fout("sate.out");
fout<<v[y]-1;
return 0;
}
void adauga(int a,int b,int c)
{
nod *q=new nod;
q->info=b;
q->kil=c;
q->next=g[a];
g[a]=q;
}