1 条题解

  • 0
    @ 2025-9-10 9:15:13

    C++ :

    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    int c=0,n,m,map[220][220];
    int vis[220];
    void dfs(int x,int s)
    {
    	if (x==n+1)
    	{
    		if (s>c)
    		{
    			c=s;	
    		}	
    		return;
    	}	
    	if (s==m)
    	{
    		printf("%d",s);
    		exit(0);	
    	}
    	int i;
    	for (i=0;map[x][i]!=-1;i++)
    	{
    		if (!vis[map[x][i]])
    		{
    			vis[map[x][i]]=1;
    			dfs(x+1,s+1);
    			vis[map[x][i]]=0;
    		}
    	}
    	if (s+n+1-x>c)
    	dfs(x+1,s);
    }
    int main()
    {
    	int i,j,k;
    	scanf("%d%d",&n,&m);
    	for (i=1;i<=n;i++)
    	{
    		scanf("%d",&k);
    		for (j=0;j<k;j++)
    		{
    			scanf("%d",&map[i][j]);	
    		}
    		map[i][j]=-1;	
    	}
    	memset(vis,0,sizeof(vis));
    	dfs(1,0);
    	printf("%d",c);
    	return 0;
    }
    
    • 1

    信息

    ID
    4495
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者