BZOJ2208 [Jsoi2010]連通數
阿新 • • 發佈:2018-10-05
字符 color c++ bzoj2208 mage col hint online esc Time Limit: 20 Sec Memory Limit: 512 MB
Submit: 4212 Solved: 1816
[Submit][Status][Discuss]
010
001
100
Submit: 4212 Solved: 1816
[Submit][Status][Discuss]
Description
Input
輸入數據第一行是圖頂點的數量,一個正整數N。 接下來N行,每行N個字符。第i行第j列的1表示頂點i到j有邊,0則表示無邊。
Output
輸出一行一個整數,表示該圖的連通數。
Sample Input
3010
001
100
Sample Output
9HINT
對於100%的數據,N不超過2000。
用warshall算法求傳遞閉包即可
通過本題了解了bitset的使用orz
#include <bits/stdc++.h> using namespace std; bitset <2005> g[2005]; int n,ans; char s[2005]; int main(){ ans = 0; scanf("%d",&n); for (int i = 1;i <= n;++i){ scanf("%s",s+1); for (int j = 1;j <= n;++j){ if (s[j] == ‘1‘) g[i][j] = 1; if (i == j) g[i][j] = 1; } } for (int i = 1;i <= n;++i){ for (int j = 1;j <= n;++j){ if (g[j][i]) g[j] |= g[i]; } } for (int i = 1;i <= n;++i){ ans += g[i].count(); } printf("%d\n",ans);return 0; }
BZOJ2208 [Jsoi2010]連通數