求助,WA第二个点(样例)
  • 板块CF28B pSort
  • 楼主ZMQ_Ink6556
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/3/4 15:22
  • 上次更新2024/3/4 18:42:53
查看原帖
求助,WA第二个点(样例)
1125291
ZMQ_Ink6556楼主2024/3/4 15:22

记录

代码:

#include<bits/stdc++.h>
using namespace std;
int n , a[105] , d[105] , stdn[105];
bool flag = 1 , filln[105];
bool check(int p , int q)
{
	while(p < 1)
	{
		p += n;
	}
	while(p > n)
	{
		p -= n;
	}
	if(a[p] == q)
	{
		return 1;
	}
	if(filln[p])
	{
		return 0;
	}
	filln[p] = 1; 
	return check(p - d[p] , q) || check(p + d[p] , q);
}
int main()
{
	ios::sync_with_stdio(0);
	ios_base::sync_with_stdio(0);
    cin >> n;
    for(int i = 1 ; i <= n ; i++)
    {
    	cin >> a[i];
	}
	for(int i = 1 ; i <= n ; i++)
    {
    	cin >> d[i];
	}
	for(int i = 1 ; i <= n ; i++)
    {
    	stdn[i] = i;
	}
	for(int i = 1 ; i <= n ; i++)
	{
		if(stdn[i] != a[i])
		{
			for(int j = 1 ; j <= n ; j++)
			{
				filln[j] = 0;
			}
			if(!check(i , stdn[i]))
			{
				flag = 0;
			}
		}
	}
	if(flag)
	{
		cout << "YES";
	}
	else
	{
		cout << "NO";
	}
	return 0;
}

思路:

DFS找连通分量

求各位大佬帮忙!

2024/3/4 15:22
加载中...