Pagini recente » Cod sursa (job #2711543) | Cod sursa (job #2728249) | Cod sursa (job #1085275) | Cod sursa (job #3231246) | Cod sursa (job #3219152)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream in("asmax.in");
ofstream out("asmax.out");
vector<vector<int>> graf;
vector<int> vis;
long long s;
void dfs(int nod)
{
cout<<nod<<" ";
vis[nod]=true;
for(int vec:graf[nod])
if(!vis[vec])
{
dfs(vec);
if(vis[vec]>0)
s=s+vis[vec];
}
}
const int MAX = 16000;
int elem[MAX+1];
int main()
{
int n;
in>>n;
vis.resize(n+1);
graf.resize(n+1);
for(int i=1; i<=n; ++i)
in>>elem[i];
for(int i=0; i<n-1; ++i)
{
int poz1, poz2, node1, node2;
in>>poz1>>poz2;
// if(i==0)
// x=poz1;
// node1=elem[poz1];
// node2=elem[poz2];
//cout<<"elem sunt "<<node1<<" "<<node2<<'\n';
graf[poz1].push_back(poz2);
graf[poz2].push_back(poz1);
}
dfs(1);
out<<s;
return 0;
}