Pagini recente » Cod sursa (job #2825191) | Cod sursa (job #2581204) | Borderou de evaluare (job #565556) | Cod sursa (job #2930574) | Cod sursa (job #3230170)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");
vector<vector<pair<int,int>>>tabel;///first==nod_c ///second==dist
vector<bool>viz;
int n,m,x,y,sum=0;
void dfs(int nod){
if(nod==y){
fout<<sum;
return;
}
viz[nod]=1;
for(auto i : tabel[nod])
if(!viz[i.first])
sum+=i.second, dfs(i.first), sum-=i.second;
}
int main()
{
fin>>n>>m>>x>>y;
if(x>y)
swap(x,y);
tabel.resize(n+1);
viz.resize(n+1,0);
for(int i=1;i<=m;i++){
int v,w,d;
fin>>v>>w>>d;
tabel[v].push_back({w,d});
}
for(int i=1;i<n;i++)
if(tabel[i].size()>1){
for(int j=0;j<tabel[i].size()-1;j++)
for(int l=j+1;l<tabel[i].size();l++)
tabel[tabel[i][j].first].push_back({tabel[i][l].first,tabel[i][l].second-tabel[i][j].second});
}
dfs(x);
return 0;
}