Bzoj1433(ハンガリーの水問題)

1 Star2 Stars3 Stars4 Stars5 Stars (まだ評価されていません)
Loading...

先週のシミュレーションゲームは、二部構成の画像が馴染みがなかったために配布された。 。 。 今日は残念です。

次の写真を言う:最終的に学校に通っている生徒と彼との良好な関係を持つ人のベッドと彼のベッドをつなぎ、バイナリマップマッチングを行う。

二者の詳細:

if(!mapp[i]||xiongyali(mapp[i])) {
mapp[i]=x;
return true;}-->  1 if文の順序に注意を払う。 

2 xiongyali()はiの代わりにmapp [i]であることに注意してください。これは30分間私を調整します。

ACコード:

#include<bits/stdc++.h>
using namespace std;
#define maxn 105
int t,n,a[maxn][maxn],b[maxn],c[maxn],cnt,sum,v[maxn],mapp[maxn];
bool xiongyali(int x){
for(int i=1;i<=n;i++){
if(a[x][i]&&!v[i]){
v[i]=1;
if(!mapp[i]||xiongyali(mapp[i])) {
mapp[i]=x;
return true;}}}return false;}
int main(){scanf("%d",&t); 
while(t-){
memset(a,0,sizeof(a));memset(mapp,0,sizeof(mapp));
cnt=0,sum=0;
scanf("%d",&n);
for(int i=1;i<=n;i++)scanf("%d",&b[i]);
for(int i=1;i<=n;i++){scanf("%d",&c[i]);if(!b[i]||(b[i]&&!c[i]))cnt++;}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
int q;scanf("%d",&q);
if((!b[i]||(b[i]&&!c[i]))&&q&&b[j])a[i][j]=1;
}if(b[i]&&!c[i])a[i][i]=1;}	
for(int i=1;i<=n;i++){
memset(v,0,sizeof(v));
if(xiongyali(i)) {
sum++;}}
if(sum==cnt)printf("^_^\n");
else printf("T_T\n");	}
return 0;}


1 Star2 Stars3 Stars4 Stars5 Stars (まだ評価されていません)
Loading...
      この投稿は審査処理中  | 元のサイトへ