50分,想看看代码是否正确。
查看原帖
50分,想看看代码是否正确。
742030
hyh0926楼主2024/7/22 10:16

因为数据有误,所以请dalao帮忙看一看。

#include<bits/stdc++.h>
using namespace std;
int r,c,n;
string wy;
bool f[20000],g[20000];
struct node
{
	int x,y;
}a[20000];
bool check(int l)
{
	bool gf[60][60]={},gg[60][60]={};
	for(int i=1;i<=n;i++)
	{
		if(i!=l)
		{
			if(gf[a[i].x][a[i].y]&&gg[a[i].x][a[i].y])
			{
				return false;
			}
			for(int j=a[i].x;j<=n;j++)
			{
				gf[j][a[i].y]=1;
			}
			for(int j=a[i].y;j>=1;j--)
			{
				gg[a[i].x][j]=1;
			}
		}
	}
	return true;
}
int main()
{
	cin>>r>>c>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i].x>>a[i].y;
		getline(cin,wy);
	}
	bool fg=0;
	for(int i=1;i<=n;i++)
	{
		if(f[a[i].x]&&g[a[i].y])
		{
			fg=1;
			break;
		}
		f[a[i].x]=1;
		g[a[i].y]=1;
	}
	if(fg==0)
	{
		cout<<0;
		return 0;
	}
	for(int i=1;i<=n;i++)
	{
		if(check(i))
		{
			cout<<i<<endl;
			fg=0;
		}
	}
	if(fg==1)
	{
		cout<<-1;
		return 0;
	}
	return 0;
}
2024/7/22 10:16
加载中...