Pagini recente » Cod sursa (job #3290582) | Rating Ungureanu Sergiu (sergione) | Cod sursa (job #1881872) | Cod sursa (job #2483041) | Cod sursa (job #866258)
Cod sursa(job #866258)
#include <fstream>
using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");
struct node
{
int nr;
int dist;
node *next;
} *v[30001]; int queue[30001],D[30001]; bool visit[30001];
int m,n,x,y;
void build_graph ()
{
int a,b,di;
node *d;
fin>>a>>b>>di;
d=new node;
d->nr=a;
d->dist=di;
d->next=v[b];
v[b]=d;
d=new node;
d->nr=b;
d->dist=di;
d->next=v[a];
v[a]=d;
}
void BFS ()
{
int p,u; node *l;
queue[1]=x;
p=u=1;
while (p<=u)
{
visit[queue[p]]=1;
l=v[queue[p]];
while (l!=NULL)
{
if (!visit[l->nr]) {queue[++u]=l->nr;
if (l->nr>queue[p]) D[l->nr]=D[queue[p]]+l->dist;
else D[l->nr]=D[queue[p]]-l->dist;
if (l->nr==y) return;}
l=l->next;
}
p++;
}
}
int main()
{
int i;
fin>>n>>m>>x>>y;
for (i=1;i<=m;i++)
{
build_graph ();
}
BFS ();
fout<<D[y];
}