Cod sursa(job #833637)

Utilizator predatorGigi Valoare predator Data 12 decembrie 2012 20:53:17
Problema Sate Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<fstream>
#include<bitset>
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
int nr,viz[100001],k,n,m,x,y,K,t,mm[20001][20001],s1,s2,D;
struct nod
{
    int inf;
    nod *adr;
}*l[100001];
int ab(int b)
{
	if(b<0)
		return -b;
	return b;
}
void create(int i,int j)
{
    nod *c=new nod;
    c->inf=j;
    c->adr=l[i];
    l[i]=c;
}
void dfs(int a)
{
    nod *c=l[a];
    viz[a]=1;
    for(;c&&!K;c=c->adr)
        if(!viz[c->inf])
        {
			t=-1;
			if((c->inf)>a)
				t=1;
			D+=t*mm[(c->inf)][a];
            viz[c->inf]=1;
			if(c->inf==s2)
			{
				K=1;
				return ;
			}
            dfs(c->inf);
			D-=t*mm[c->inf][a];
        }
}
int main ()
{
    f>>n>>m>>s1>>s2;
    for(k=1;k<=m;++k)
    {
        f>>x>>y>>mm[x][y];
		mm[y][x]=mm[x][y];
        create(x,y);
        create(y,x);
    }
	dfs(s1);
    g<<ab(D);
    return 0;
}