Submission #739208

#TimeUsernameProblemLanguageResultExecution timeMemory
739208NeroZein친구 (IOI14_friend)C++17
0 / 100
1 ms340 KiB
#include "friend.h" #include <bits/stdc++.h> using namespace std; const int N = 1003; int n; int a[N]; int vis[N]; int dp[N][2]; vector<int> g[N]; int findSample(int n_, int confidence[],int host[],int protocol[]){ n = n_; for (int i = 0; i < n; ++i) { a[i] = confidence[i]; } for (int i = 1; i < n; ++i) { if (protocol[i] == 1) { g[host[i]].push_back(i); g[i].push_back(host[i]); } else { for (int j : g[host[i]]) { g[j].push_back(i); g[i].push_back(j); } if (protocol[i] == 3) { g[i].push_back(host[i]); g[host[i]].push_back(i); } } } int ans = 0; function<void(int, int)> Dfs = [&](int v, int p) { int sum0 = 0, sum1 = 0; vis[v] = true; //cout << v << ' '; for (int u : g[v]) { if (vis[u]) { continue; } Dfs(u, v); sum0 += dp[u][0]; sum1 += dp[u][1]; } dp[v][0] = sum1; dp[v][1] = max(a[v] + sum0, sum1); }; for (int i = 0; i < n; ++i) { memset(dp, 0, sizeof dp); memset(vis, 0, sizeof vis); Dfs(i, i); //cout << '\n'; //for (int j = 0; j < n; ++j) { //cout << j << ' ' << dp[j][0] << ' ' << dp[j][1] << '\n'; //} ans = max(dp[i][0], dp[i][1]); //cout << '\n'; } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...