繼續我的刷題之路。。。
*題目描述 description
有一矩形區域的城市中建築了若干建築物,如果某兩個單元格有乙個點相聯絡,則它們屬於同一座建築物。現在想在這些建築物之間搭建一些橋梁,其中橋梁只能沿著矩形的方格的邊沿搭建,如下圖城市1有5棟建築物,可以搭建4座橋將建築物聯絡起來。城市2有兩座建築物,但不能搭建橋梁將它們連線。城市3只有一座建築物,城市4有3座建築物,可以搭建一座橋梁聯絡兩棟建築物,但不能與第三座建築物聯絡在一起。
輸入描述 input description
在輸入的資料中的第一行包含描述城市的兩個整數r 和c, 分別代表從北到南、從東到西的城市大小(1 <= r <= 50 and 1 <= c <= 50). 接下來的r 行, 每一行由c 個(「#」)和(「.」)組成的字元. 每乙個字元表示乙個單元格。「#」表示建築物,「.」表示空地。
輸出描述 output description
在輸出的資料中有兩行,第一行表示建築物的數目。第二行輸出橋的數目和所有橋的總長度。
樣例輸入 sample input
樣例1
3 5
#…#
..#..
#…#樣例2
3 5
##…
…..
….#樣例3
3 5
#.###
#.#.#
###.#
樣例4:
3 5
#.#..
…..
….#樣例輸出 sample output
樣例1
5 4 4
樣例2
2 0 0
樣例3
1 0 0
樣例4
3 1 1
資料範圍及提示 data size & hint
見描述*
噫。 首先,dfs求聯通塊,just like 球細胞個數
v表示每個點所在聯通塊的編號;
考慮對於每個點,有12個方向上的點可以鏈結。
所以,列舉這條直線上所有點
b表示兩個聯通塊之間最短的邊
之後跑克魯斯卡爾
求最小生成樹;
得到答案~!~!~!~
**!:~
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define inf 1000000000
#define fi first
#define se second
#define n 100005
#define p 1000000007
#define debug(x) cerr<<#x<<"="<#define mp(x,y) make_pair(x,y)
using namespace std;
int n,m,a[51][51],v[1001][1001],f[1001],ans=0;
int b[1001][1001];
int kk=1;
int fx[9]=;
int fy[9]=;
int find(int
x)struct zqm
q[100001];
inline int get_num()
//忽略這一堆沒用的讀入優化
void dfs(int
x,int
y) }
}bool cmp(zqm a ,zqm b)
int main()
}for(int i=1;i<=n;i++)}}
kk--;
coutb[v[i][j]][v[k][l]]=min(b[v[i][j]][v[k][l]],i-k-1);
b[v[k][l]][v[i][j]]=b[v[i][j]][v[k][l]];}}
for(int k=i+2;k<=n;k++)
b[v[i][j]][v[k][l]]=min(b[v[i][j]][v[k][l]],k-i-1);
b[v[k][l]][v[i][j]]=b[v[i][j]][v[k][l]];}}
for(int k=i-1;k<=i+1;k++)
b[v[i][j]][v[k][l]]=min(b[v[i][j]][v[k][l]],j-l-1);
b[v[k][l]][v[i][j]]=b[v[i][j]][v[k][l]];}}
for(int k=i-1;k<=i+1;k++)
b[v[i][j]][v[k][l]]=min(b[v[i][j]][v[k][l]],l-j-1);
b[v[k][l]][v[i][j]]=b[v[i][j]][v[k][l]];}}
}}
int p=0;
/*for(int i=1;i<=n;i++)
//coutfor(int i=1;i<=kk;i++)
int pp=kk;
for(int i=1;i<=p;i++)}}
cout<" "
《噫話說為啥我上傳不了。
搭橋 CODEVS 1002 ,詳細注釋
考查最小生成樹,這裡用kruskal演算法實現,裡面用到了並查集。include include include include using namespace std int n,m 0 行列數 char input 2505 輸入的資料 struct bcj 找爸爸的遞迴函式,不停去找,直到找到...
PAT乙級訓練題 1002
讀入乙個自然數n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。輸入格式 每個測試輸入包含1個測試用例,即給出自然數n的值。這裡保證n小於10100。輸出格式 在一行內輸出n的各位數字之和的每一位,拼音數字間有1 空格,但一行中最後乙個拼音數字後沒有空格。輸入樣例 123456789098765...
PAT乙級真題1002
1002 寫出這個數 20 20 分 讀入乙個自然數n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。輸入格式 每個測試輸入包含1個測試用例,即給出自然數n的值。這裡保證n小於10 100 輸出格式 在一行內輸出n的各位數字之和的每一位,拼音數字間有1 空格,但一行中最後乙個拼音數字後沒有空格。...