1388C. Uncle Bogdan and Country Happiness
生活随笔
收集整理的這篇文章主要介紹了
1388C. Uncle Bogdan and Country Happiness
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
C. Uncle Bogdan and Country Happiness
純純DFS #include <bits/stdc++.h> using namespace std; const int N = 1e5 + 3; #define int long long int a[N], b[N], c[N]; vector<int> cun[N]; int vis[N]; int ff = 1; void DFS(int x) {int res = 0;int xx = a[x];for (int i = 0; i < cun[x].size(); i++){int u = cun[x][i];if (!vis[u]){vis[u] = 1;DFS(u);a[x] += a[u]; //總?cè)藬?shù)是加上x(chóng)城市的res += b[u]; //應(yīng)該的幸福數(shù)值沒(méi)加上x(chóng)城市的}}if ((a[x]+b[x])&1) ff = 0;//如果不是偶數(shù)int cou = (a[x]-b[x])/2;if (b[x]) cou+=b[x];int cou1 = (a[x]-xx-res)/2;if (res) cou1+=res;if (cou<cou1) ff = 0;//好心情的人比子節(jié)點(diǎn)還少if (abs(b[x])>a[x]) ff = 0;//這個(gè)點(diǎn)的幸福數(shù)值大于總?cè)藬?shù)if (a[x]-xx>abs(res));//如果所有人都是壞人或者好人都不行 } signed main() {int t;cin >> t;while (t--){int n, m, x, y;cin >> n >> m;for (int i = 1; i <= n; i++)cun[i].clear(), vis[i] = 0;for (int i = 1; i <= n; i++)cin >> a[i]; //人數(shù)for (int i = 1; i <= n; i++)cin >> b[i];for (int i = 1; i < n; i++){cin >> x >> y;cun[x].push_back(y);cun[y].push_back(x);}ff = 1;vis[1] = 1; DFS(1);if (ff) cout << "YES" << endl;else cout << "NO" << endl;} } 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的1388C. Uncle Bogdan and Country Happiness的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: IT工程项目需求获取的主要方法
- 下一篇: Laravel框架中的路由和控制器