1 solutions

  • 1
    @ 2025-6-25 13:16:29
    #include<bits/stdc++.h>
    using namespace std;
    const int N=105,M=25,K=25;
    int n,m,k;
    int g[N];
    int f[1<<21];
    queue<pair<int,int> >q;
    void bfs(int xs)
    {
    	q.push({xs,0});
    	f[xs]=1;
    	while(!q.empty())
    	{
    		int x=q.front().first,t=q.front().second;
    		q.pop();
    		if(x==(1<<m)-1)
    		{
    			cout<<t;
    			return;
    		}
    		for(int i=0;i<n;i++)
    			if(!f[x|g[i]])
    				q.push({x|g[i],t+1}),f[x|g[i]]=1;
    	}
    	cout<<-1;
    }
    signed main()
    {
    	cin>>n>>m>>k;
    	for(int i=0;i<n;i++)
    		for(int j=1,o;j<=k;j++)
    			(cin>>o),g[i]|=(1<<(o-1));
    	bfs(0);
    	return 0;
    }
    
    • 1

    Information

    ID
    407
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    10
    Tags
    # Submissions
    2
    Accepted
    1
    Uploaded By