MLE有救吗?
查看原帖
MLE有救吗?
649315
心灵震荡楼主2022/10/30 10:39

蒟蒻提问:非官方网站上自测40pts,线下用Arbiter评测机尝试评测,全是MLE,有救吗?

#include<bits/stdc++.h>
using namespace std;
int n,m,u,v,q,opt;
struct node{
	int num;
	bool b;
};
node a[10005][10005];
int cnt[10005];
bool vis[10005];
bool dfs(int x){
	if(vis[x]==1)return 1;
	for(int i=1;i<=n;i++){
		if(a[x][i].b){
			vis[i]=1;
			if(dfs(i))return 1;
		}
	}
	return 0;
}
int main(){
    freopen("galaxy.in","r",stdin);
    freopen("galaxy.out","w",stdout);
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		cin>>u>>v;
		a[u][v].num=1;
		a[u][v].b=1;
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++)cnt[i]+=a[i][j].num;
	}
	cin>>q;
	for(int k=1;k<=q;k++){
		cin>>opt;
		if(opt==1){
			cin>>u>>v;
			a[u][v].b=0;
			cnt[u]--;
		}else if(opt==2){
			cin>>u;
			for(int i=1;i<=n;i++){
				if(a[i][u].num&&a[i][u].b){
					a[i][u].b=0;cnt[i]--;
				}
			}
		}else if(opt==3){
			cin>>u>>v;
			a[u][v].b=1;
			cnt[u]++;
		}else{
			cin>>u;
			for(int i=1;i<=n;i++){
				if(a[i][u].num&&a[i][u].b==0){
					a[i][u].b=1;cnt[i]++;
				}
			}
		}
		bool flag=1;
		for(int i=1;i<=n;i++){
			if(cnt[i]!=1){
				flag=0;
				break;
			}
		}
		if(!flag){
			cout<<"NO"<<endl;
			continue;
		}
		for(int i=1;i<=n;i++){
			memset(vis,0,sizeof vis);
			if(!dfs(i)){
				flag=0;
				break;
			}
		}
		if(!flag){
			cout<<"NO"<<endl;
			continue;
		}
		cout<<"YES"<<endl;
	}
	return 0;
}

2022/10/30 10:39
加载中...