性感代码,在线求调
查看原帖
性感代码,在线求调
502983
jhhh楼主2024/11/2 10:53
#include<bits/stdc++.h>
using namespace std;
#define N 1145
vector <int> e[N];
int dfn[N],low[N],tot;
bool instk[N];stack <int>stk;
int id[N],siz[N],cnt;
void tarjan(int u){
	dfn[u]=low[u]=++cnt;
	stk.push(u),instk[u]=1;
	for(auto v:e[u]){
		if(!dfn[v]){
			tarjan(v);
			low[v]=min(low[v],low[u]);
		}else if(instk[v]){
			low[v]=min(low[v],dfn[u]);
		}
	}
	if(dfn[u]==low[u]){
		int v;++cnt;
		do{
			v=stk.top();
			stk.pop();
			instk[v]=0;
			id[v]=cnt;
			siz[cnt]++;
		}while(v!=u);
	}
}
int main(){
	int n;
	cin>>n;
	for(int i=1;i<=n;i++){
		int l;
		scanf("%d",&l);
		while(l!=0){
			e[i].push_back(l);
			scanf("%d",&l);
		}
	}
	int t_in[n+1],t_out[n+1];
	memset(t_in,0,sizeof(t_in));
	memset(t_out,0,sizeof(t_out));
	for(int i=1;i<=n;i++){
		if(!dfn[i])tarjan(i);
	}
	for(int i=1;i<=n;i++){
		for(auto j:e[i]){
			if(id[i]!=id[j]){
				t_in[id[j]]++;
				t_out[id[i]]++;
			}
		}
	}
	if(cnt==1){
		printf("1\n0");return 0;
	}
	int ans=0;
	for(int i=1;i<=cnt;i++){
		if(t_in[i]==0)ans++;
	}
	printf("%d\n",ans);
	int ans2=0;
	for(int i=1;i<=cnt;i++){
		if(t_out[i]==0)ans2++;
	}
	printf("%d",max(ans,ans2));
	return 0;
}
2024/11/2 10:53
加载中...