Pagini recente » Cod sursa (job #1261981) | Cod sursa (job #2316438) | Cod sursa (job #13133) | Cod sursa (job #2949342) | Cod sursa (job #1571134)
/*
aj=g[curent][i].second>=g[sursa][curent].second? g[curent][i].second-g[sursa][curent].second:g[sursa][curent].second-g[curent][i].second;
g[sursa].push_back(make_pair(g[curent][i].first,g[curent][i].second+g[sursa][curent].second));
*/
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");
vector< pair<short,int> > g[30001]; //primul e vecinul, al doilea e distanta pana la vecin
int sate, muchii, x, y, q, w, d, sursa, aj, suma, limit, rez;
bool viztot[30001], viz[30001];
int dfs(int curent)
{
viz[curent]=1;
for(int i=0;i<g[curent].size();i++)
if(!viz[g[curent][i].first])
{
if(sursa<curent)
{
if(g[curent][i].first>curent and g[curent][i].first>sursa)
suma+=g[curent][i].second;
else
if(g[curent][i].first<curent and g[curent][i].first<sursa)
suma-=g[curent][i].second;
else
suma-=g[curent][i].second;
}
else
{
if(g[curent][i].first>curent and g[curent][i].first>sursa)
suma-=g[curent][i].second;
else
if(g[curent][i].first<curent and g[curent][i].first<sursa)
suma+=g[curent][i].second;
else
suma-=g[curent][i].second;
}
g[sursa].push_back(make_pair(g[curent][i].first,suma));
if(sursa==x and g[curent][i].first==y)
rez=suma;
dfs(g[curent][i].first);
}
viz[curent]=0;
}
int main()
{
fin>>sate>>muchii>>x>>y;
for(int i=1;i<=muchii;i++)
{
fin>>q>>w>>d;
g[q].push_back(make_pair(w, d));
g[w].push_back(make_pair(q, d));
}
for(int i=0;i<sate and !rez;i++)
if(!viz[i])
{
viz[i]=1;
sursa=i;
limit=g[i].size();
for(int y=0;y<limit;y++)
{
suma=g[sursa][y].second;
dfs(g[sursa][y].first);
}
}
fout<<rez;
return 0;
}