JZOJ3896 戰爭遊戲 割點

2022-09-03 03:27:08 字數 1084 閱讀 9322

很明顯的,對於經過每個割點的路徑,有兩種情況討論:

由外部連進來的:用外部的節點總個數×

×縮點中節點的總個數

兩個縮點自己相連:用兩個縮點的節點個數相乘,最後因為會多算一倍,所以÷2÷

2用tar

jant

arja

n加上簡單的樹上計算就可以過。

#include

#include

#include

using

namespace std;

const

int n=

50010

;const

int m=

100010

;int n,m,x,y,num,tot,head[n]

,size[n]

,dfn[n]

,low[n]

,ans[n]

;bool vis[n]

;struct edge

e[m*2]

;void

add(

int from,

int to)

void

tarjan

(int x,

int fa)

//割點

if(y!=fa)

low[x]

=min

(low[x]

,low[y]);

}for

(int i=head[x]

;~i;i=e[i]

.next)

//求答案

} ans[x]

+=s/2;

}int

main()

tarjan(1

,0);

for(

int i=

1;i<=n;i++

)printf

("%d\n"

,ans[i]

+n-1);

return0;

}

Jzoj P3896 戰爭遊戲

n nn個點,m mm條無向邊,保證任意兩點間都連通。問對於這n nn個點而言,分別作為任意兩點間所有路徑的必經點的次數有多少次。必經點,假如a ba b a b的所有路徑都存在經過點c cc,則稱c cc為必經點 n 5 104 m 1 05 n 5 10 4,m 10 5 n 5 10 4,m ...

JLOI2015 戰爭排程

記憶體限制 256 mib 時間限制 1000 ms 標準輸入輸出 題目型別 傳統 評測方式 文字比較 臉哥最近來到了乙個神奇的王國,王國裡的公民每個公民有兩個下屬或者沒有下屬,這種關係剛好組成乙個 n 層的完全二叉樹。公民 i 的下屬是 2i 和 2i 1 最下層的公民即葉子節點的公民是平民,平民...

JLOI2015 戰爭排程 war

一開始看這題,毫無頭緒 不過發現n十分的小,最多只有10,想一想暴搜加優化。先試著打了打暴搜,從上往下列舉狀態,然後搜尋到子節點的時候,再統計答案,每個父節點的答案是兩個子節點答案的和,dfs x,y,z 表示當前搜到的點二進位制狀態為x,從根節點到底層打仗的狀態為y,然後此時要打仗的人有z個。然後...