Pagini recente » Cod sursa (job #1618344) | Cod sursa (job #9939) | Cod sursa (job #204350) | Cod sursa (job #1566083) | Cod sursa (job #501095)
Cod sursa(job #501095)
#include<vector>
#include<fstream>
using namespace std;
ifstream in("sate.in");
ofstream out("sate.out");
const int N=30050;
vector<int> d[N];
vector<short int>a[N];
int n,m,x,y;
int dist[N],c[N];
bool viz[N];
void read()
{
int z,t,u;
in>>n>>m>>x>>y;
for(int i=1;i<=m;i++)
{
in>>z>>t>>u;
d[z].push_back(u);
a[z].push_back(t);
d[t].push_back(u);
a[t].push_back(z);
}
}
void bfs(int x)
{
int p,u,i,r,q;
p=u=0;
c[p]=x;
while(p<=u)
{
r=c[p];
for(i=0;i<a[r].size();i++)
{
q=a[r][i];
if(!viz[q])
{
if(r<=q)
dist[q]=dist[r]+d[r][i];
else
dist[q]=dist[r]-d[r][i];
viz[q]=1;
if(q==y)
return;
c[++u]=q;
}
}
p++;
}
}
int main()
{
read();
bfs(x);
out<<dist[y];
return 0;
}