NKOI 期末賽題D 假期關樓

2021-07-13 22:01:46 字數 1446 閱讀 6599

p3696假期關樓

時間限制 : 2000ms   空間限制 : 65536kb 

問題描述

暑假到了,大部分學生都回家了,只有少量競賽學生還在學校裡。

學校打算逐步把教學樓都關閉。以減少運營成本。

學校裡的n棟教學樓(編號1到n)通過m條雙向道路連線起來。每關閉了一棟樓,與該樓相連的所有道路同時都會被關閉。

何老闆想知道,學校每關閉一棟樓,剩下的處於開放狀態的教學樓是否是連通的。連通就是指任何兩個開放的樓都可以相互到達。

注意,有可能一開始所有樓都不連通。

輸入格式

第一行,乙個兩個整數n和m

接下來m行,每行兩個整數x和y,表示x、y兩棟樓間有道路直接相連。

接下來n行,每行乙個整數代表一棟樓的編號。整個n行數字表示依次關閉的教學樓的順序。

輸出格式

共n行,每行是"yes"或者"no",若剩下的樓是連通的輸出yes,否則輸出no。

其中第1行表示一開始整個學校的樓是否連通。

其中第i+1行表示第i次關閉教學樓後,剩下的樓是否連通。

樣例輸入

4 31 22 3

3 4341

2 樣例輸出

yesnoyes

yes 提示

對於40%的資料1≤n,m≤3000

對於100%的資料1≤n,m≤200000

並查集倒著考慮操作,就變成了加邊。

記錄當前時刻有多少個連通塊,如果有乙個,那麼答案是yes,否則是no。

對於當前點,把當前點與已經新增進的點合併。每合併一次,連通塊減一。 

#include#includeusing namespace std;

const int maxn=200005;

int n,m,ct,father[maxn],s[maxn],ans[maxn];

bool mark[maxn];

int end[2*maxn],next[2*maxn],last[maxn];

inline void _read(int &x)

for(x=0;t>='0'&&t<='9';t=getchar())x=x*10+t-'0';

if(!sign)x=-x;

}int getfather(int x)

void insert(int a,int b)

int main()

for(i=1;i<=n;i++)father[i]=i;

for(i=1;i<=n;i++)_read(s[i]);

for(i=n;i>=1;i--)

ans[i]=sum;

mark[x]=1;//mark記錄是否討論過當前點

} for(i=1;i<=n;i++)

if(ans[i]==1)puts("yes");

else puts("no");

}

2020美賽D題翻譯

problem d teaming strategies 隨著社會之間的聯絡越來越緊密,他們面臨的挑戰也越來越複雜。我們依靠具有不同專業知識和不同見解的跨學科團隊來解決許多最具挑戰性的問題。在過去的50多年中,我們對團隊成功的概念性理解有了很大進步,從而使更好的科學,創意或物理團隊可以解決這些複雜的...

2021美賽D題思路

團隊為建模國一獲得者,有豐富建模經驗,因為需保證建模思路的完整性,更新較慢,怕被d 新號。問題一 使用impact data資料集或其中的一部分來建立 影響力的 多個 定向網路,將影響者連線到追隨者。開發可捕獲此網路中 影響力 的引數。通過建立定向影響者網路的子網來探索 影響力的子集。描述此子網。您...

CDUESTC 2016 假期賽1 B題

b 整除的尾數 time limit 1000msmemory limit 32768kb64bit io format i64d i64u description 乙個整數,只知道前幾位,不知道末二位,被另乙個整數除盡了,那麼該數的末二位該是什麼呢?input 輸入資料有若干組,每組資料報含二個整...