RE求助
查看原帖
RE求助
695577
ShizukuQWQ楼主2023/5/20 10:56
#include<bits/stdc++.h>
using namespace std;
int n,m,ru[1145],x,a[1005],b[1005],at,bt,ans;
bool f[1005],ff[1005][1005];
vector<int> v[1145];
struct node{
	int x,s;
}fr,sh;
queue<node> q;
int topo(){
    for(int i=1;i<=n;i++){
        if(ru[i]==0){
      		sh.x=i,sh.s=1;
      		q.push(sh);
		}
    }
    while(!q.empty()){
    	fr=q.front();
    	q.pop();
    	ans=max(ans,sh.s);
    	for(int i=0;i<v[fr.x].size();i++){
    		int u=v[fr.x][i];
    		ru[u]--;
    		if(ru[u]<1){
    			sh.x=u;
    			sh.s=fr.s+1;
    			q.push(sh);
			}
		}
	}
}
int main(){
    cin>>n>>m;
    for(int i=1;i<=m;i++){
        int qwq,x;
        cin>>qwq;
        at=0;
        bt=0;
        int mx=0;
        for(int j=1;j<=qwq;j++) cin>>x,f[x]=1,mx=max(mx,x);
        for(int j=1;j<=mx;j++){
        	if(f[j]) a[++at]=j;
        	else b[++bt]=j;
		}
		for(int j=1;j<=at;j++){
			for(int k=1;k<=bt;k++){
				if(!ff[b[k]][a[j]]){
					ff[b[k]][a[j]]=1;
					v[b[k]].push_back(a[j]);
					ru[a[j]]++;
				}
			}
		}
	}
    topo();
    cout<<ans;
}
              re求助
2023/5/20 10:56
加载中...