Pagini recente » Cod sursa (job #913930) | Cod sursa (job #855500) | Cod sursa (job #1781055) | Cod sursa (job #657132) | Cod sursa (job #1509692)
#include <fstream>
using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");
struct nod
{
int info;
int dist;
nod *urm;
};
nod *a[30001];
int n,m,xi,xf,viz[30001],d[30001];
void Add(nod *&prim,int x,int c)
{
nod *q=new nod;
q->info=x;
q->dist=c;
q->urm=prim;
prim=q;
}
void Citire()
{
fin>>n>>m>>xi>>xf;
int i,x,y,d;
for(i=1;i<=m;i++)
{
fin>>x>>y>>d;
Add(a[x],y,d);
Add(a[y],x,-d);
}
}
void BFS(int xi)
{
nod *p;
int pr,ul,c[30001],i,v;
viz[xi]=1;
c[1]=xi; pr=ul=1;
while(pr<=ul)
{
v=c[pr];
pr++;
for(p=a[v];p!=NULL;p=p->urm)
if(viz[p->info]==0)
{
d[p->info]=d[v]+p->dist;
viz[p->info]=1;
ul++;
c[ul]=p->info;
}
}
}
int main()
{
Citire();
BFS(xi);
fout<<d[xf]<<" ";
return 0;
}