Cod sursa(job #1564868)

Utilizator LycrsTrifan Tamara Lycrs Data 9 ianuarie 2016 23:57:09
Problema Sate Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include<bits/stdc++.h>
using namespace std;


ifstream f("sate.in");
ofstream g("sate.out");


typedef struct Nod
{
    int info;
    int drum;
    Nod *next;
} *Lista;
 
int x, y, m, n, r=0, a, b, s;
Lista L[30003];
bool viz[30003];
 
void add(int x, Lista &y, int s)
{
    Lista p=new Nod;
    p->drum=s;
    p->info=x;
    p->next=y;
    y=p;
}
 
int dfs(int x, int D)
{
	
    viz[x]=1;
    for (Lista p=L[x]; p; p=p->next)
        if (viz[p->info]==0){
        	if (p->info==b && x<b) return D + p->drum;
        	if (p->info==b && x>b) return D - p->drum;
        	
        	if (x<p->info) return dfs(p->info, D + p->drum);
        	if (x>p->info) return dfs(p->info, D - p->drum);
		} 
	viz[x]=0;
}
 
 

int main(){
	
	f>>n>>m>>a>>b;
    for (int i=1; i<=m; ++i)
    {
        f>>x>>y>>s;
        add(x, L[y], s);
        add(y, L[x], s);
    }
 	
 	g<<dfs(a, r);
	
	return 0;
}