JSOI2008 星球大戰

2022-08-13 07:57:13 字數 909 閱讀 5339

題意簡述:給出n個點的無向圖,每次刪去乙個點,詢問當前的連通塊個數。

刪點太難做,不如加點,首先將詢問讀取,然後離線倒著處理。

標記每個已經刪去的點,首先計算出所有沒標記的點一共組成多少個連通塊。

然後依次加點,同時刪去標記,首先將連通塊個數增加1,而當前點每與其他的連通塊相連,連通塊個數減少1,最終算出答案即可

能夠保證每條邊最多走兩遍,並查集時間複雜度不計的話,時間複雜度o(n)

#include#include

#include

#include

using

namespace

std;

void read(int &y)

}int

n,m,cnt,ans;

int f[400005],head[400005

];int q[200005],vis[400005

];struct

edge

e[400005

];void add(int u,int

v)int find(int

x)int

main()

read(m);

for(int i=0;i)

ans=n-m;

for(int i=0;i)

}q[m]=ans;

for(int i=m-1;i>=0;i--)

q[i]=q[i+1]-tans;

}for(int i=0;i<=m;i++) printf("

%d\n

",q[i]);

return0;

}

jsoi2008 星球大戰

題目描述 很久以前,在乙個遙遠的星系,乙個黑暗的帝國靠著它的超級 統治者整個星系。某一天,憑著乙個偶然的機遇,一支反抗軍摧毀了帝國的超級 並攻下了星系中幾乎所有的星球。這些星球通過特殊的以太隧道互相直接或間接地連線。但好景不長,很快帝國又重新造出了他的超級 憑藉這超級 的力量,帝國開始有計畫地摧毀反...

JSOI 2008 星球大戰

題目傳送門星球大戰 題目描述 很久以前,在乙個遙遠的星系,乙個黑暗的帝國靠著它的超級 統治者整個星系。某一天,憑著乙個偶然的機遇,一支反抗軍摧毀了帝國的超級 並攻下了星系中幾乎所有的星球。這些星球通過特殊的以太隧道互相直接或間接地連線。但好景不長,很快帝國又重新造出了他的超級 憑藉這超級 的力量,帝...

jsoi2008星球大戰bzoj1015

很簡單的一題,但是資料範圍看錯了和讀題時沒看到是0到n 1搞得wa了一次tle了一次真是弱啊喵,就是簡單的一道離線然後並查集加點就可以了喵 include include include include define ll long long define n 400005 define m 400...