제출 #1350453

#제출 시각아이디문제언어결과실행 시간메모리
1350453po_rag526Svjetlo (COCI20_svjetlo)C++20
0 / 110
86 ms44616 KiB
#include <iostream>
#include <queue>
#include <vector>
#include <set>
#include <algorithm>
using namespace std;
const int N = 1e6 + 10;
vector<int> ma[N];
char s[N];
vector<int> ord;
void dfs(int x,int p=0)
{
	ord.push_back(x);
	for(auto y:ma[x])
	{
		if(y^p)
		{
			dfs(y,x);
		}
	}
}
int main()
{
	ios::sync_with_stdio(0);
	cout.tie(0);
	cin.tie(0);
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>s[i];
	}
	for(int i=1;i<n;i++)
	{
		int x,y;
		cin>>x>>y;
		ma[x].push_back(y);
		ma[y].push_back(x);
	}
	for(int i=1;i<=n;i++)
	{
		if(ma[i].size()==1)
		{
			dfs(i);
			break;
		}
	}
	int l=-1,r=-1;
	for(int i=0;i<n;i++)
	{
		if(s[ord[i]]=='0')
		{
			if(l==-1)l=i;
			r=i;
		}
	}
	int ans=r-l+1;
	for(int i=l;i<=r;i++)
	{
		ans+=(s[ord[i]]=='1');
	}
	cout<<ans<<endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...