80分,玄关
  • 板块P2712 摄像头
  • 楼主Eden_star
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/11/25 15:28
  • 上次更新2024/11/25 19:16:48
查看原帖
80分,玄关
1269111
Eden_star楼主2024/11/25 15:28

1怎么入队的?

#include<bits/stdc++.h>
using namespace std;
const int N=1e6+5;
int n,m,cnt,_max;
int rd[N];
bool X[N];
vector<int> pic[N];
queue<int> q;
void topo_sort();
int main(){
	int u,v;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>u>>m;
		if(!X[u]){
			X[u]=true;
		}
		while(m--){
			cin>>v;
			if(!X[v]){
				X[v]=true;
			}
			pic[u].push_back(v);
			rd[v]++;
			_max=max(_max,v);
		}
	}
	for(int i=1;i<=_max;i++){
		if(!rd[i]&&X[i]){
			q.push(i);
			cnt++;
		}
	}
	topo_sort();
	return 0;
}
void topo_sort(){
	while(!q.empty()){
		int x=q.front();
		cout<<x<<" ";
		q.pop();
		int len=pic[x].size();
		for(int i=0;i<len;i++){
//			cout<<"x"<<x<<" "<<pic[x][i]<<" ";
			rd[pic[x][i]]--;
			if(rd[pic[x][i]]==0){
				q.push(pic[x][i]);
				cnt++;
			}
		}
	}
	if(cnt<n){
		cout<<n-cnt;
	}
	else cout<<"YES";
	return ;
}
2024/11/25 15:28
加载中...