社区讨论

求助 本地问题

P1983[NOIP 2013 普及组] 车站分级参与者 2已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@lo8a1e15
此快照首次捕获于
2023/10/27 15:13
2 年前
此快照最后确认于
2023/10/27 15:13
2 年前
查看原帖
明明事课上的代码
可是跑起来就像喝了昏睡红茶的远野后辈一样(CE)
CPP
#include<bits/stdc++.h>
#define ll long long
using namespace std;
#define P pair<int,int>
const int MAXN=1e3+5;
int s[MAXN][MAXN],n,m,ans,in[MAXN],vis[MAXN],tot,pd[MAXN][MAXN];
queue<P> q;
vector<int> v[MAXN];
int fastread(){
	char ch;
	int res=0;
	while(ch=getchar(),ch<'0'||ch>'9');
	res=ch-48;
	while(ch=getchar(),ch>'0'&&ch<'9')
	res=(res<<3)+(res<<1)+ch-48;
	return res;
}
void bfs(){
	int i;
	for(i=1;i<=n;i++)
	if(in[i]==0)
	q.push(make_pair(i,1));
	ans=1;
	while(!q.empty()){
		int u=q.front().first,val=q.front().second;
		q.pop();
		for(i=0;i<v[u].size();i++){
			int V=v[u][i];
			in[V]--;
			if(in[V]==0){
				q.push(make_pair(v,val+1));
				ans=max(ans,val+1);
			}
		}
	}
}
int main(){
	int i,j,a;
	n=fastread();
	m=fastread();
	for(i=1;i<=n;i++){
		s[i][0]=fastread();
		memset(vis,false,sizeof(vis));
		for(j=1;j<=s[i][0];j++){
			a=fastread();
			s[i][j]=a;
			vis[a]=1;
		}
		for(j=s[i][1];j<=s[i][s[i][0]];j++){
			if(vis[j]){
				continue;
			}
			for(int k=1;k<=s[i][0];k++){
				if(!pd[j][s[i][k]]){
					in[s[i][k]]++;
					v[j].push_back(s[i][k]);
					pd[j][s[i][k]]=1;
				}
			}
		}
	}
	bfs();
	cout<<ans;
	return 0;
}

回复

2 条回复,欢迎继续交流。

正在加载回复...