Pagini recente » Cod sursa (job #3251566) | Cod sursa (job #2433502) | Cod sursa (job #500874) | Cod sursa (job #3151384) | Cod sursa (job #1018360)
#include<fstream>
#include<vector>
#include<queue>
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
int n,m,x,y,sol,i;
struct nod{
int sat,d;
};
vector <nod> v[30003];bool viz[30003];
nod make_nod(int a,int b)
{
nod c;
c.sat=a;
c.d=b;
return c;
}
void citire()
{
int a,b,dist;
f>>n>>m>>x>>y;
for(int i=1;i<=m;i++)
{
f>>a>>b>>dist;
v[a].push_back(make_nod(b,dist));
v[b].push_back(make_nod(a,dist));
}
}
void bfs()
{
nod p;
int i;
queue <nod> q;
q.push(make_nod(x,0));
viz[x]=1;
while(!q.empty() && !viz[y])
{
nod t;
t=q.front();
q.pop();
for(i=0;i<v[t.sat].size();i++)
{
p=v[t.sat][i];
if(viz[p.sat]==0)
{
if(p.sat>t.sat)
p.d+=t.d;
else
p.d=t.d-p.d;
viz[p.sat]=1;
q.push(p);
if(p.sat==y)
sol=p.d;
}
}
}
}
int main()
{
citire();
bfs();
g<<sol;
}