0分WA求调
查看原帖
0分WA求调
1273558
fly__sheep楼主2025/6/28 21:47
#include<vector>
#include<iostream>
#include<cstring>
using namespace std;
const int maxn=2*1e3+5;
struct node{
	bool v;
	int to;
};
int n,nxt[maxn],lnxt[maxn],da,last;
char edge[maxn][maxn];
char s;
bool ce;
int main(){
	cin>>n;
	for(int i=2;i<=n;i++){
		for(int j=1;j<i;j++){
			cin>>s;
			edge[i][j]=s;
			edge[j][i]=s;
		}
	}
	for(int i=1;i<=n;i++){
		da=i;
		ce=0;
		last=i;
		for(int j=1;j<=n;j++){
			if(j==i)continue;
			if(edge[lnxt[last]][last]==edge[last][j]||(last==i)){
				nxt[last]=j;
				lnxt[j]=last;
				last=j;
				if(!ce)da=j;
			}
			else{
				if(!ce){
					nxt[last]=j;
					lnxt[j]=last;
					ce=1;
					da=last;
					last=j;
				}
				else if(edge[lnxt[da]][da]==edge[da][j]){
					if(edge[j][nxt[da]]==edge[da][j]){
						int y=nxt[da];
						nxt[da]=j;
						lnxt[j]=da;
						da=y;
						nxt[j]=da;
						lnxt[da]=j;
					}
					else{
						int y=nxt[da];
						nxt[da]=j;
						lnxt[j]=da;
						da=j;
						nxt[j]=y;
						lnxt[y]=j;
					}
				}
				else{
					if(edge[lnxt[da]][j]==edge[lnxt[da]][da]){
						int y=da;
						nxt[lnxt[da]]=j;
						lnxt[j]=lnxt[da];
						da=j;
						nxt[j]=y;
						lnxt[y]=j;
					}
					else{
						int y=da;
						nxt[lnxt[da]]=j;
						lnxt[j]=lnxt[da];
						da=lnxt[da];
						if(da==i)ce=0;
						nxt[j]=y;
						lnxt[y]=j;
					}
				}
			}
		}
		cout<<n<<'\n'<<i<<' ';
		for(int j=nxt[i];j;j=nxt[j])cout<<j<<' ';
		cout<<'\n';
		memset(nxt,0,sizeof(nxt));
		memset(lnxt,0,sizeof(lnxt));
	}
}
2025/6/28 21:47
加载中...