Pagini recente » Cod sursa (job #2522465) | Cod sursa (job #2278858) | Cod sursa (job #1636558) | Cod sursa (job #1385906) | Cod sursa (job #2213808)
#include <fstream>
#include <vector>
#include <iomanip>
using namespace std;
vector <int> arc[30002] , cost[30002];
int n,m,x,y,a,b,c,rasp,p;
bool viz[30002];
char k;
void dfs(int start, int dis)
{
int i;
viz[start]=1;
if(start==y)
{
rasp=dis;
return ;
}
for(i=0;i<arc[start].size();i++)
if(!viz[arc[start][i]])
if(start<arc[start][i])
dfs(arc[start][i],dis+cost[start][i]);
else
dfs(arc[start][i],dis-cost[start][i]);
}
int main()
{
ifstream f("sate.in");
ofstream g("sate.out");
int i;
f>>n>>p>>x>>y;
f.get();
for(i=1;i<=p;i++)
{
f.get(k);
while(isdigit(k))
{
m=m*10+k-48;
f.get(k);
}
a=m;m=0;
f.get(k);
while(isdigit(k))
{
m=m*10+k-48;
f.get(k);
}
b=m;m=0;
f.get(k);
while(isdigit(k))
{
m=m*10+k-48;
f.get(k);
}
c=m;m=0;
arc[a].push_back(b);
arc[b].push_back(a);
cost[a].push_back(c);
cost[b].push_back(c);
}
dfs(x,0);
g<<rasp;
return 0;
}