時間限制: 1 sec
記憶體限制: 256 mb
robert是一位著名的工程師。一天他的老闆給了他乙個任務。任務的背景如下:
給出一張由方塊組成的地圖。方塊有許多種:牆,草,和空地。老闆想讓robert在地圖上放置盡可能多的機械人。每個機械人拿著一把雷射槍,它可以同時向東西南北四個方向射擊。機械人必須一直呆在它開始時被放在的位置並且不斷地射擊。雷射束當然可以經過空地或草地,但不能穿過牆。機械人只能被放在空地上。當然老闆不希望看到機械人相互攻擊。換句話說,兩個機械人不能被放在一條線上(豎直或水平),除非它們中間有一堵牆。
由於你是一位機智的程式設計師和robert的好**之一,他請你幫他解決這個問題。也就是說,給出地圖的描述,計算地圖上最多能放置的機械人數量。
輸入檔案的第一行有兩個正整數m,n(1<=m,n<=50),即地圖的行數和列數。
接下來有m行,每行n個字元,這些字元是'#','*'或
'o',它們分別代表牆,草和空地。
輸出一行乙個正整數,即地圖中最多放置的機械人數目
sample 1:4 4o***
*###
oo#o
***o
sample 2:
4 4#ooo
o#oo
oo#o
***#
sample 1:3sample 2:
5
#include #include #include usingnamespacestd;
constintn = 2505;
inta[n][n],x;
boolvis[n];
intlink[n],head[n];
intcnt,n,m,k;
ints[n],z[n],p[n][n],t[n][n];
structedge;
edge edge[n*n];
voidinit()
voidadd(intu,intv)
booldfs(intu)}}
returnfalse;}
intmatch()
returnans;}
intmain()
if(q=='*')
a[i][j]=1;
if(q=='#')
a[i][j]=2;
}for(inti=1;i<=m;i++)
for(intj=1;j<=n;j++)
}
}for(inti=1;i<=n;i++)
for(intj=1;j<=m;j++)
}
}for(inti=1;i<=e;i++)
printf("%d\n",match());
return0;
}
放置機械人
羅伯特是一位著名的工程師 有一天,老闆給了他一項任務。該任務的背景如下 給定乙個由方塊組成的地圖。有三種塊 wall,grass和empty。他的老闆想在地圖上放置盡可能多的機械人。每個機械人都持有乙個雷射 可同時向四個方向 北,東,南,西 射擊。機械人不得不一直呆在最初放置的地方,並一直 雷射束當...
ZOJ 1654 二分匹配基礎題
題意 給你一副圖,有草地 空地 o 和牆 空地上可以放機械人,機械人向上下左右4個方向開槍 槍不能穿牆 問你在所有機械人都不相互攻擊的情況下能放的最多的機器人數。思路 這是一類經典題的衍化,如果沒有牆,我們會將行和列看成兩列點陣,然後就可以用二分匹配解。現在有牆怎麼辦呢,把某一行或列 有牆的拆分成多...
好色機械人的豔遇 機械人豔遇 《機械人的旅行》
講述機械人 路遇開房車的 剛剛開始的時候畫風很舒服,直到到了晚上上了她的床之後。畫風速變了!這個女主角聲音超好聽。整個情節實在太流氓了,太猥瑣了!連六六君這樣的老司機都看不下去了!正片在三分五十,不謝 很抱歉,此內容已經失效了!就連六六君也無法恢復了。請欣賞其他有效的內容 當您看到這條資訊的時候,很...