第7个点MLE,求助
查看原帖
第7个点MLE,求助
1061050
jiangyunuo楼主2025/7/28 09:34
#include<bits/stdc++.h>
using namespace std;
vector<short>e[1001];
short n,m,s,a[1001],x,y,g[1001],ans,top,nn,c;
bool z[1005];
int main(){
	cin>>n>>m;
	nn=n;
	for(int i=1;i<=m;i++){
		cin>>s;
		for(int j=1;j<=s;j++){
			cin>>a[j];
		}
		x=1;
		for(int j=a[1];j<=a[s];j++){
			if(a[x]!=j){
				for(int k=1;k<=s;k++){
					e[a[k]].push_back(j);
					g[j]++;
				}
			}
			if(a[x]==j)x++;
		}
	}
	for(int i=1;i<=n;i++){
		sort(e[i].begin(),e[i].end());
		for(int j=0;j<e[i].size();j++){
			if(j==e[i].size()-1)break;
			if(e[i][j]==e[i][j+1]&&e[i][j]!=e[i][e[i].size()-1]){
				c=e[i][j];
				e[i][j]=e[i][e[i].size()-1];
				e[i][e[i].size()-1]=c;
				g[c]--;
				e[i].pop_back();
			}
			if(e[i][j]==e[i][j+1]&&e[i][j]==e[i][e[i].size()-1]){
				for(int k=j+1;k<e[i].size();k++){
					g[e[i][e[i].size()-1]]--;
					e[i].pop_back();
				}
				break;
			}
		}
	}
	for(int i=1;i<=n;i++)z[i]=1;
	while(nn){
		ans++;
		top=0;
		for(int i=1;i<=n;i++){
			if(!g[i]&&z[i]){
				z[i]=0;
				a[++top]=i;
				nn--;
			}
		}
		for(int i=1;i<=top;i++){
			for(int j=0;j<e[a[i]].size();j++){
				g[e[a[i]][j]]--;
			}
			e[a[i]].clear();
		}
	}
	cout<<ans<<endl;
	return 0;
}
2025/7/28 09:34
加载中...