loj 1063 求割點個數

2021-09-08 16:57:14 字數 1163 閱讀 7848

思路:判斷乙個點是否是割點的兩個條件:1、如果乙個點v是根結點並且它的子女個數大於等於2,則v是割點。2、如果點v不是根結點,並且存在她的乙個子女u,使得low[u]>=dfn[v],則v是割點。然後我發現以前求割點的寫法有點問題,=.=//。幸好不是在比賽中遇到!貢獻上最新模板。

1 #include2 #include3 #include4 #include5

using

namespace

std;

6#define maxn 4444478

struct

edgeedge[maxn<<1

];11

12int

n,m,ne;

13int

head[maxn];

1415

void insert(int u,int

v)16

2122

intcnt,ans;

23int

low[maxn],dfn[maxn];

24bool

mark[maxn];

2526

bool

is_cutpoint[maxn];

27void tarjan(int root,int

u)28

else

if(mark[v])42}

43if(u==root&&rt_son>=2)46

}4748int

main()

4961 cnt=ans=0

;62 memset(mark,false,sizeof

(mark));

63 memset(dfn,0,sizeof

(dfn));

64 memset(is_cutpoint,false,sizeof

(is_cutpoint));

65for(int i=1;i<=n;i++)

68for(int i=1;i<=n;i++)if(is_cutpoint[i])ans++;

69 printf("

case %d: %d\n

",t++,ans);70}

71return0;

72 }

view code

P3388 割頂 求割點個數

第一行輸入兩個正整數 n,mn,m。下面 mm 行每行輸入兩個正整數 x,yx,y 表示 xx 到 yy 有一條邊。第一行輸出割點個數。第二行按照節點編號從小到大輸出節點,用空格隔開。輸入 1複製 6 7 1 21 3 1 42 5 3 54 5 5 6 輸出 1複製 1 5 code includ...

藍橋杯 歷屆試題(只有40分,強聯通求割點個數)

在網上看了看其他人的題解,有拿並查集判斷去除某個點後兩個是否屬於同一棵樹的,有用dfs判斷從某點到某點的方法有幾個,順便記錄路上經過點,到達則每個點經過次數加一,最後判斷方法和次數是否一致,一致則說明為必經dian 也可以用深搜和廣搜判斷去除某一點後,是否還能抵達.我看了看 好像屬於割點,可以用ta...

Doctor order 逆序數求交點個數

題目大意 兩條退垂直於x軸的直線,y沒有限制,給出幾條y kx b的直線,求這些直線將兩條線之間的區域分割成幾塊兒。解題思路 經過研究 多試幾次是好了 結果 直線數 交點數 1。所以重點就變成了求交點的個數,從大牛們的部落格中看到用逆序數求交點個數,頓時感覺好牛,有木有!過程是這樣的 對每一條直線的...