제출 #320598

#제출 시각아이디문제언어결과실행 시간메모리
320598GioChkhaidzePower Plant (JOI20_power)C++14
100 / 100
232 ms26148 KiB
#include <bits/stdc++.h>

#define pb push_back

using namespace std;
 
const int N=2e5+5;

string s; 
int n,a,b,dp[N];
vector < int > v[N];

void dfs(int x,int p) {
  int t=(s[x-1]=='1'),res=0;
  dp[x]=t;
  for (int i=0; i<v[x].size(); i++) {
    int to=v[x][i];
    if (to==p) continue;
    dfs(to,x);
    res+=dp[to];
  }
  res-=t;
  dp[x]=max(res,dp[x]);
}

int ans;
void Dfs(int x,int p,int res) {
  int t=(s[x-1]=='1'),S=res-t;
  
  for (int i=0; i<v[x].size(); i++) {
    int to=v[x][i];
    if (to==p) continue;
    S+=dp[to];
  }

  ans=max(ans,S);
  for (int i=0; i<v[x].size(); i++) {
    int to=v[x][i];
    if (to==p) continue;
    Dfs(to,x,max(t,S-dp[to]));
  }
}

int main() {
  ios::sync_with_stdio(false);
  cin.tie(NULL),cout.tie(NULL);
 
  cin>>n;
  for (int i=1; i<n; i++) {
    cin>>a>>b;
    v[a].pb(b);
    v[b].pb(a);
  }
  
  cin>>s;
  
  int cnt=0;
  for (int i=0; i<s.size(); i++) 
    if (s[i]=='1') cnt++;
    
  ans=min(2,cnt);
  
  dfs(1,1);
  Dfs(1,1,0);
  
  cout<<ans<<"\n";
}

컴파일 시 표준 에러 (stderr) 메시지

power.cpp: In function 'void dfs(int, int)':
power.cpp:16:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   16 |   for (int i=0; i<v[x].size(); i++) {
      |                 ~^~~~~~~~~~~~
power.cpp: In function 'void Dfs(int, int, int)':
power.cpp:30:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   30 |   for (int i=0; i<v[x].size(); i++) {
      |                 ~^~~~~~~~~~~~
power.cpp:37:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   37 |   for (int i=0; i<v[x].size(); i++) {
      |                 ~^~~~~~~~~~~~
power.cpp: In function 'int main()':
power.cpp:58:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   58 |   for (int i=0; i<s.size(); i++)
      |                 ~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...