Cod sursa(job #1443684)

Utilizator FiliutaMariusFMI Filiuta Marius FiliutaMarius Data 28 mai 2015 14:37:43
Problema Asmax Scor 20
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul I, Semestrul 2 Marime 0.93 kb
#include<iostream>
#include<fstream>
using namespace std;
long int mat[16001][16001];
long int dfs(long int n, long int nod)
{
    long int suma=0,x;
    for(int i=1;i<=n;i++)
        if(nod!=i && (mat[nod][i] || mat[i][nod]) )
        {
            mat[nod][i]=mat[i][nod]=0;
            x=dfs(n,i);
            if(x>0)
                suma+=x;

        }
    if(suma+mat[nod][nod]>0)
        return suma+mat[nod][nod];
    else
        return 0;
}
int main ()
{
    long int n,x,y,max,sum;
    ifstream in("asmax.in");
    ofstream out("asmax.out");
    in>>n;
    for(int i=1;i<=n;i++)
    {
        in>>mat[i][i];
        if(i==1)
            max=mat[i][i];
        else
            if(mat[i][i]>max)
                max=mat[i][i];
    }
    for(int i=0;i<n;i++)
    {
        in>>x>>y;
        mat[x][y]=mat[y][x]=1;
    }
    sum=dfs(n,1);
    if(sum==0)
        out<<mat;
    else
        out<<sum;

}