Pagini recente » Cod sursa (job #1806731) | Cod sursa (job #1546602) | Cod sursa (job #2524239) | Cod sursa (job #193470) | Cod sursa (job #2911838)
#include <iostream>
#include <vector>
using namespace std;
int n, m, x, y;
const int Nmax=30001;
vector <int> adi[Nmax];
vector <int> cst[Nmax];
int vis[Nmax];
int distanta[Nmax];
void bfs(int startnode)
{
for(int i=0; i<adi[startnode].size(); i++)
{
int vecin=adi[startnode][i];
if(vis[vecin]==0)
{
vis[vecin]=1;
if(vecin>startnode)
distanta[vecin]=distanta[startnode]+cst[startnode][i];
else distanta[vecin]=distanta[startnode]-cst[startnode][i];
bfs(vecin);
}
}
}
int main()
{
freopen("sate.in", "r", stdin);
freopen("sate.out", "w", stdout);
scanf("%d%d%d%d", &n, &m, &x, &y);
for(int i=0; i<m; i++)
{
int s1, s2;
int dist;
scanf("%d%d", &s1, &s2);
scanf("%d", &dist);
adi[s1].push_back(s2);
adi[s2].push_back(s1);
cst[s1].push_back(dist);
cst[s2].push_back(dist);
}
bfs(x);
cout<<distanta[y];
}