Pagini recente » Cod sursa (job #1629353) | Cod sursa (job #2433581) | Cod sursa (job #2151546) | Cod sursa (job #955117) | Cod sursa (job #1469074)
using namespace std;
#include <stdlib.h>
#include <fstream>
#include <vector>
ifstream f ("sate.in");
ofstream g ("sate.out");
struct drum{int y,d;};
vector <drum> G[30001];
int n,s,d;
int dmin[30001];
int Q[30001];
int viz[30001];
void read();
void solve();
void write();
int main ()
{
read();
solve();
write();
}
void read()
{
int i,x,y,c,m;
drum aux;
f>>n>>m>>s>>d;
for (i=1; i<=m; i++)
{
f>>x>>y>>c;
aux.y=y;
aux.d=c;
G[x].push_back(aux);
aux.y=x;
G[y].push_back(aux);
}
}
void solve()
{
int p,u,i,x;
drum aux;
dmin[s]=0;
Q[0]=s;
p=u=0;
viz[s]=1;
while(p<=u && !viz[d])
{
x=Q[p++];
vector <drum> :: iterator it;
for(it=G[x].begin(); it!=G[x].end(); it++)
{
aux=*it;
if(!viz[aux.y])
{
if(aux.y>x) dmin[aux.y]=dmin[x]+aux.d;
else dmin[aux.y]=dmin[x]-aux.d;
viz[aux.y]=1;
Q[++u]=aux.y;
}
}
}
}
void write()
{
g<<dmin[d];
}