Pagini recente » Cod sursa (job #2987232) | Cod sursa (job #2080824) | Cod sursa (job #2941092) | Cod sursa (job #2425740) | Cod sursa (job #1443684)
#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;
}