帮帮我!P1983车站分级
  • 板块学术版
  • 楼主Secret_Sky_2021
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/7/11 21:50
  • 上次更新2023/11/3 10:26:20
查看原帖
帮帮我!P1983车站分级
601270
Secret_Sky_2021楼主2023/7/11 21:50

P1983 [NOIP2013 普及组] 车站分级

第二个样例RE找不到哪里错了

#include<bits/stdc++.h>
using namespace std;
const int N=1010; 
int n,m;
int st[N],de[N];
bool is[N],ts[N][N];
int main(){
	cin>>n>>m;
	int s;
	while(m--){//建图
		memset(is,0,sizeof(is));
		scanf("%d",&s);//cin>>s;
		for(int j=1;j<=s;j++){
			scanf("%d",&st[j]);//cin>>st[j];
			is[st[j]]=1;
		}
		for(int i=st[1];i<=st[s];i++){
			if(!is[i]){
				for(int j=1;j<=s;j++){
					int ou=st[j];
					if(ts[i][ou]==0){
						ts[i][ou]=1;
						de[ou]++;
					}
				}
			}
		}
	}
	int top;
	bool vis[N];
	memset(vis,0,sizeof(vis));
	int tt[N],ans=0;
	memset(tt,0,sizeof(tt));
	do{
		top=0;
		for(int i=1;i<=n;i++){
			if(!vis[i]&&de[i]==0){
				top++;
				vis[i]=1;
				tt[++top]=i;
			}
		}
		for(int i=1;i<=top;i++){
			for(int j=1;j<=n;j++){
				if(ts[tt[i]][j]){
					ts[tt[i]][j]=0;
					de[j]--;
				}
			}
		}
		ans++;
		
	} while(top);
	cout<<ans-1;
	return 0;
}
/*
9 2 
4 1 3 5 6 
3 3 5 6 
*/
2023/7/11 21:50
加载中...