不知道到干嘛今天一天没状态…

先 说 一 下 这 题 把 , 肯 定 先 找 到 两 个 不 相 关 的 点 先说一下这题把,肯定先找到两个不相关的点 ,

让 这 2 个 点 相 等 , 再 进 行 构 造 让这2个点相等,再进行构造 2,

但 是 接 着 怎 么 办 呢 ? ? 但是接着怎么办呢?? ??

因 为 关 系 是 任 意 的 , 不 妨 每 次 都 让 后 面 的 数 大 于 前 面 的 因为关系是任意的,不妨每次都让后面的数大于前面的 ,

这 样 关 系 总 会 是 相 等 的 这样关系总会是相等的

因 为 我 们 是 从 n 填 数 字 到 3 , 所 以 1 和 2 肯 定 都 是 最 小 的 , 不 用 考 虑 i 和 j 的 影 响 因为我们是从n填数字到3,所以1和2肯定都是最小的,不用考虑i和j的影响 n3,12,ij

#include <bits/stdc++.h>
using namespace std;
const int maxn=2e5+10;
int n,m,a[maxn],b[maxn],cnt=3;
set<int>s[maxn];
int main()
{
	cin >> n >> m;
	for(int i=1,x,y;i<=m;i++)
	{
		scanf("%d%d",&x,&y);
		if(x>y)	swap(x,y);
		s[x].insert(y);
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=i+1;j<=n;j++)
		{
			if(!s[i].count(j))
			{
				a[i]=1,a[j]=2;
				b[i]=b[j]=1;
				for(int k=n;k>=1;k--)
				if(k!=i&&k!=j)	a[k]=b[k]=cnt++;
				cout<<"YES"<<endl;
				for(int i=1;i<=n;i++)	cout<<a[i]<<" ";
				cout<<endl;
				for(int i=1;i<=n;i++)	cout<<b[i]<<" ";
				return 0;
			}
		}
	}
	cout<<"NO";
}