一个奇怪的问题
  • 板块灌水区
  • 楼主Zikl
  • 当前回复7
  • 已保存回复7
  • 发布时间2023/10/6 00:06
  • 上次更新2023/11/2 15:22:26
查看原帖
一个奇怪的问题
300166
Zikl楼主2023/10/6 00:06

今天写代码 程序显示

[Error] ld returned 1 exit status

过了一会

他自己好了


#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#define int long long
int n,a[2005][2005],ans[2005],ct;
using namespace std;
int head[800005],ver[800005],Next[800005],tot=1;
void add(int x,int y){
	ver[++tot]=y,Next[tot]=head[x],head[x]=tot;
}
int stack_[2005],dfn[2005],low[2005],cnt,top,inq[2005],cntt;
int inv[2005];
void tarjan(int x){
	dfn[x]=low[x]=++cnt;
	stack_[++top]=x;
	inq[x]=1;
	for(int i=head[x];i;i=Next[i]){
		int y=ver[i];
		if(!dfn[y]) {
			tarjan(y);
			low[x]=min(low[x],low[y]);
		}
		if(inq[y])
		low[x]=min(low[x],dfn[y]);
	}
	if(low[x]==dfn[x]){
		++cntt;
		while(1){
			inq[stack_[top]]=0;
			inv[stack_[top]]=cntt;
			top--;
			if(stack_[top+1]==x) break;
		}
	}
}
inline void write(int x) {
	if (x > 9) write(x / 10);
	putchar(x % 10 + '0');
}
inline void clear(){
	cnt=cntt=top=ct=0;
	tot=1;
	memset(a,0,sizeof(a));
	memset(dfn,0,sizeof(dfn));
	memset(low,0,sizeof(low));
	memset(inq,0,sizeof(inq));
	memset(inv,0,sizeof(inv));
}
signed main(){
	while(scanf("%d",&n)!=-1){
	clear();
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
	int k;
	scanf("%d",&k);
		ct=0;
		for(int j=1;j<=k;j++){
		cin>>a[i][++ct];
		add(i,a[i][ct]+n);
		}
	}
	for(int i=1;i<=n;i++){
		int x;
		scanf("%d",&x);
	add(x+n,i);	
	}
	for(int i=1;i<=n;i++)
	if(!dfn[i]) tarjan(i); 
	for(int i=1;i<=n;i++){
		int bb=1,num=0;
		while(a[i][bb]){
			if(inv[a[i][bb]+n]==inv[i])
			ans[++num]=a[i][bb];
			bb++;
		}
		sort(ans+1,ans+1+num);
		write(num);
		putchar(' ');
		for(int j=1;j<=num;j++){
			write(ans[j]);
			putchar(' ');
		}
		cout<<endl;
	}	
		}
	return 0;
}

这是那份代码。

有没有大佬解决我的疑惑 qwq

2023/10/6 00:06
加载中...