Bob in Wonderland(思維+構造)
https://ac.nowcoder.com/acm/contest/7817/C
思路:比較明顯的造幾個資料去模擬發現最小的次數就是葉節點的個數-1.但是這夠了嗎?wa了一發發現需要從節點度數是1的地方開始dfs去求。造了個資料發現在中間的時候以中間那個點為根會導致多出葉子節點來。
以其中一個葉子節點為根進行構造,這樣葉子個數就最少了。
#include<iostream>
#include<vector>
#include<queue>
#include<cstring>
#include<cmath>
#include<map>
#include<set>
#include<cstdio>
#include<algorithm>
#define debug(a) cout<<#a<<"="<<a<<endl;
using namespace std;
const int maxn=3e5+100;
typedef long long LL;
vector<LL>g[maxn];
LL deg[maxn];
bool vis[maxn];
LL sum=0;
void dfs(LL u,LL fa)
{
for(LL i=0;i<g[u].size();i++)
{
LL v=g[u][i];
if(!vis[v]&&v!=fa)
{
vis[v]=true;
if(deg[v]==1) sum++;
dfs(v,u);
}
}
}
int main(void)
{
cin.tie(0);std::ios::sync_with_stdio(false);
LL n;cin>>n;
if(n==1){
cout<<0<<endl;return 0;
}
for(int i=1;i<n;i++){
LL x,y;cin>>x>>y;
g[x].push_back(y);g[y].push_back(x);
deg[x]++;deg[y]++;
}
///vis[1]=true;
///dfs(1,-1);
for(LL i=1;i<=n;i++){
if(deg[i]==1){
vis[i]=true;
dfs(i,-1);
cout<<sum-1<<endl;
return 0;
}
}
/// cout<<sum-1<<endl;
return 0;
}
相關文章
- 如何激發創造性思維?睡覺!
- 抽取思維(重構設計)
- 思維體系---技術思維、業務資料思維、產品思維、複合思維
- 企業架構思維導圖架構
- 說一說結構化思維
- 淺析工具思維、產品思維、品牌思維與定位
- 求職思維和招聘思維求職
- 2020牛客暑期多校訓練營(第三場)D Points Construction Problem 構造思維題Struct
- 專訪宜信財富管理產品部負責人Bob:市場變化驅動產品思維升級
- 架構與思維:分散式鎖方案分析架構分散式
- 大話資料結構-思維導圖資料結構
- 《自然》:人工智慧在創造性思維方面超越人類人工智慧
- 架構與思維:微服務架構的思想本質架構微服務
- 把流量思維變成留量思維
- 框架思維框架
- 極思維
- 黑客思維黑客
- MindNode 2023 for Mac:釋放創造力,高效思維導圖軟體Mac
- 透視不同的架構思維,賞析架構之美架構
- # 0x0001構建架構思維理論前篇架構
- 架構與思維:如何應對Redis熱Key?架構Redis
- 架構師應該具備哪些思維模型?架構模型
- 如何建立架構師的立體化思維?架構
- 遞推的思維構建與技巧實現
- Codeforces 346A Alice and Bob
- 利用一維陣列構造二叉樹陣列二叉樹
- 你是整體思維還是分析思維? - kentbeck
- 架構與思維:一定需要微服務麼?架構微服務
- 如何利用結構化思維寫好分析報告?
- 大專案為服務架構設計思維架構
- React 筆記 | React 的出現和構建思維React筆記
- 架構思維實現promise,大爺,來瞅瞅架構Promise
- 計算思維
- 模型思維(01)模型
- 提升思維邏輯—SimpleMind Pro(思維導圖) for Mac/winMac
- 什麼是產品思維和專案思維? - Shreyas
- 《計算思維史話》思維導圖——持續更新
- 創新思維框架:第一原則思維 - Neil Kakkar框架