难过('-')
by OCBun @ 2018-05-29 21:41:05
有那个dalao知道第一组数据是什么吗
by OCBun @ 2018-05-31 19:11:45
蒟蒻求助
by OCBun @ 2018-05-31 19:27:17
Σ(*゚д゚ノ)ノ
by OCBun @ 2018-05-31 20:17:59
烧了一晚上脑子,终于出来了。
应该是忽略了没有人在校的情况,用了那种写法,于是造成了无输出。。。
by OCBun @ 2018-05-31 21:17:29
总之,改了好几处,还参考了下题解。。。
修改后的代码。。。
```cpp
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;
const int maxn=110;
int n,fndb[maxn],gvb[maxn],id[maxn],adm[maxn][maxn],link[maxn],used[maxn],
cds[maxn];
void reda(){
int i,j;
scanf("%d",&n);
for (i=1;i<=n;i++) scanf("%d",&id[i]);
for (i=1;i<=n;i++){
int rec;
scanf("%d",&rec);
if (id[i]==0) continue;
if (id[i]==1) if (rec==1) cds[i]=1;
}
for (i=1;i<=n;i++){
for (j=1;j<=n;j++){
scanf("%d",&adm[i][j]);
}
if (id[i]==1) adm[i][i]=1;
}
}
void pre(){
reda();
for (int i=1;i<=n;i++){
if (cds[i]==0) {fndb[0]++;fndb[fndb[0]]=i;}
if (id[i]==1) {gvb[0]++;gvb[gvb[0]]=i;}
}
}
int hga(int x){
int i,j;
for (i=1;i<=gvb[0];i++){
if ((adm[fndb[x]][gvb[i]])&&(used[i]==0)){
used[i]=1;
if ((link[i]==0)||(hga(link[i]))){
link[i]=x;
return 1;
}
}
}
return 0;
}
int judge(){
int i;
for (i=1;i<=fndb[0];i++){
memset(used,0,sizeof(used));
if (hga(i)==0) return 0;
}
return 1;
}
int main(){
int i,j,t,k;
scanf("%d",&t);
for (k=1;k<=t;k++){
memset(fndb,0,sizeof(fndb)); memset(id,0,sizeof(id));
memset(gvb,0,sizeof(gvb)); memset(adm,0,sizeof(adm));
memset(link,0,sizeof(link)); memset(cds,0,sizeof(cds));
pre();
if (judge()) printf("^_^\n");
else printf("T_T\n");
}
return 0;
}
```
by OCBun @ 2018-05-31 21:23:14