很明顯的,對於經過每個割點的路徑,有兩種情況討論:
由外部連進來的:用外部的節點總個數×
×縮點中節點的總個數
兩個縮點自己相連:用兩個縮點的節點個數相乘,最後因為會多算一倍,所以÷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個。然後...