社区讨论

ooo求助全wa!

P2825[HEOI2016/TJOI2016] 游戏参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@m24krmbi
此快照首次捕获于
2024/10/11 18:18
去年
此快照最后确认于
2025/11/04 17:26
4 个月前
查看原帖
数组改小了还是wa,样例输出是对的
CPP
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int n,m,t,book[1005],ans,ma[1005],h[60][60],snum,hnum,s[60][60];
char mapn[60][60];
vector <int> ve[1055];
bool dfs(int x)
{
    for(int i=0;i<ve[x].size();i++)
    {
        int to=ve[x][i];
        if(book[to])
        {
            continue;
        }
        book[to]=1;
        if(ma[to]==0||dfs(ma[to])==1)
        {
            ma[to]=x;
            return 1;
        }
        
    }
    return 0;
}
int main()
{
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    {
    	for(int j=1;j<=m;j++)
    	{
    		cin>>mapn[i][j];
		}
	}
	for(int i=1;i<=n;i++)//横 
    {
    	for(int j=1;j<=m;j++)
    	{
    		if(mapn[i][j]=='*'||mapn[i][j]=='x')
    		{
    			if(mapn[i][j-1]!='*'){
    				h[i][j]=++hnum;
				}
				else if(mapn[i][j-1]=='*')
				{
					h[i][j]=hnum;
				}
			}
		}
	}
	for(int i=1;i<=m;i++)//竖 
    {
    	for(int j=1;j<=n;j++)
    	{
    		if(mapn[j][i]=='*')
    		{
    			if(mapn[j-1][i]!='*'){
    				s[j][i]=++snum;
				}
				else if(mapn[j-1][i]=='*')
				{
					s[j][i]=snum;
				}
				ve[s[j][i]].push_back(h[j][i]);
			}
		}
	}
	for(int i=1;i<=snum;i++)
    {
        memset(book,0,sizeof(book));
        if(dfs(i))
        {
            ans++;
        }
    }
	cout<<ans;
    return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...