Cod sursa(job #2213808)

Utilizator roberttrutaTruta Robert roberttruta Data 17 iunie 2018 15:30:14
Problema Sate Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#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;
}