Submission #773044

#TimeUsernameProblemLanguageResultExecution timeMemory
773044davitmargPower Plant (JOI20_power)C++17
0 / 100
6 ms12008 KiB
/* DavitMarg In pr honky-tonk, Down in Mexico */ #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <algorithm> #include <cmath> #include <vector> #include <string> #include <cstring> #include <map> #include <unordered_map> #include <set> #include <unordered_set> #include <queue> #include <bitset> #include <stack> #include <cassert> #include <iterator> #include <random> #include <chrono> #define mod 1000000007ll #define LL long long #define LD long double #define MP make_pair #define PB push_back #define all(v) v.begin(), v.end() #define fastIO ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); using namespace std; const int N = 500005; int n; string s; vector<int> g[N]; int dp[N]; int ans = 0; int dfs(int v, int p) { dp[v] = s[v] - '0'; int sum = 0; int mx = 0; for(int i = 0; i < g[v].size(); i++) { int to = g[v][i]; if(to == p) continue; sum += dfs(to, v); mx = max(dp[to], mx); } dp[v] = max(dp[v], sum - (s[v] - '0')); return dp[v]; } void dfs2(int v, int p) { dp[v] = s[v] - '0'; int sum = 0; int mx = 0; for(int i = 0; i < g[v].size(); i++) { int to = g[v][i]; if(to == p) continue; sum += dp[to]; mx = max(dp[to], mx); } dp[v] = max(dp[v], sum - (s[v] - '0')); ans = max(ans, max(dp[v], (s[v] - '0') + mx)); for(int i = 0; i < g[v].size(); i++) { int to = g[v][i]; if(to == p) continue; dfs(to, v); } } LL myRand() { return ((LL)rand() << 16) + rand(); } void solve() { cin >> n; for(int i = 1; i <= n - 1; i++) { int a, b; cin >> a >> b; g[a].PB(b); g[b].PB(a); } cin>>s; s = '#' + s; vector<int> p; for(int i = 1; i <= n; i++) if(s[i] == '1') p.PB(i); int st = p[0]; dfs(st, -1); dfs2(st, -1); cout << ans << endl; } int main() { fastIO; int T = 1; //cin >> T; while (T--) { solve(); } return 0; } /* cd /mnt/d/Davit/Projects/VSCode; g++ -std=c++17 -O2 -Wall -Wextra -Ddeath -Wshadow source.cpp -o orz; ./orz; rm orz */

Compilation message (stderr)

power.cpp: In function 'int dfs(int, int)':
power.cpp:46:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   46 |     for(int i = 0; i < g[v].size(); i++)
      |                    ~~^~~~~~~~~~~~~
power.cpp: In function 'void dfs2(int, int)':
power.cpp:63:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   63 |     for(int i = 0; i < g[v].size(); i++)
      |                    ~~^~~~~~~~~~~~~
power.cpp:75:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   75 |     for(int i = 0; i < g[v].size(); i++)
      |                    ~~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...