WA 50 求助
查看原帖
WA 50 求助
381706
EXnoLph楼主2022/8/3 08:41
#include<cstdio>
#define MAXN 8000010
#define MAX(A,B) ((A)>(B)?(A):(B))
int sl,fh;
int read(){
    sl=0;fh=1;
    char ch=getchar();
    while(ch<'0'||'9'<ch) {if(ch=='-') fh=-1; ch=getchar();}
    while('0'<=ch&&ch<='9') sl=sl*10+ch-'0',ch=getchar();
    return sl*fh;
}
int to[MAXN], nxt[MAXN], head[305], top;
void add(int now,int tow){to[++top]=tow;nxt[top]=head[now];head[now]=top;}
int vis[MAXN], use[MAXN], id=1;
int priority[305], ans[305], f[305];
int like[305][205], arc_bon[MAXN];
bool dfs(int x){
	for (int i=head[x];i!=0;i=nxt[i]){
		int ver=to[i];
		if(like[x][arc_bon[ver]]>priority[x]){continue;}
		if(vis[ver]!=id){
			vis[ver]=id;
			if(priority[x]<=f[x]&&ans[x]!=-1){ans[x]=MAX(use[ver],ans[x]);}
			if(use[ver]==0||dfs(use[ver])){use[ver]=x;if(priority[x]<=f[x]){ans[x]=-1;}return 1;}
		}
	}
	return 0;
}
int tot, n, m;
int bon[305][2];
void init(){
	for(int i=1;i<=top;i++){vis[i]=0;use[i]=0;}
	for(int i=1;i<=tot;i++){arc_bon[i]=0;}
	for(int i=1;i<=n;i++){head[i]=0;bon[i][0]=0;bon[i][1]=0;priority[i]=0;ans[i]=0;f[i]=0;for(int j=1;j<=m;j++){like[i][j]=0;}}
	for(int i=1;i<=top;i++){to[i]=0;nxt[i]=0;}
	top=0;id=1;tot=0;
}
signed main(){
	int t, c;t=read();c=read();
	while(t--){
		n=read();m=read();
		for(int i=1, te;i<=m;i++){
			te=read();
			bon[i][0]=tot+1;
			for(int j=1;j<=te;j++){arc_bon[++tot]=i;}
			bon[i][1]=tot;
		}
		for(int i=1, ch;i<=n;i++){
			for(int j=1;j<=m;j++){
				ch=read();
				if(ch){
					for(int k=bon[j][0];k<=bon[j][1];k++){
						add(i,k);
					}
					like[i][j]=ch;
				}
			}
		}
		for(int i=1;i<=n;i++){
			f[i]=read();
		}
		for(int i=1;i<=n;i++){
			priority[i]=1;
			while(1){
				if(dfs(i)){printf("%d ", priority[i]);id++;break;}
				id++;
				priority[i]++;
				if(priority[i]==m+1){printf("%d ", m+1);break;}
			}
		}
		puts("");
		for(int i=1;i<=n;i++){
			if(!ans[i]){printf("%d ", i);}
			else if(ans[i]==-1){printf("%d ",0);}
			else{printf("%d ", i-ans[i]);}
		}
		puts("");
		init();
	}
	return 0;
}

有大佬把忙找一下问题吗? 谢谢了

2022/8/3 08:41
加载中...