。。。
查看原帖
。。。
1383196
_540441530楼主2025/7/27 14:22
#include <bits/stdc++.h>
using namespace std;
int a[1005],n,m;
int e[25][25];
int main()
{
	ios :: sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
	// int n;
	cin >> n >> m;
	for (int i = 0;i < n;i ++)
	{
		cin >> a[i];
	}
    int x,y;
    for (int i = 0;i < m;i ++)
    {
        cin >> x >> y;
        e[x][y] = 1;
        e[y][x] = 1;
    }
    for (int i = 1;i <= n;i ++)
    {
        for (int j = 1;j <= n;j ++)
        {
            cout << e[i][j] << ' ';
        }
        cout << endl;
    }
    vector<int> tmp;
    int ans = 0;
    bool flag = 1;
	for (int i = 0;i < (1 << n);i ++)
	{
        tmp.clear();
        flag = 1;
		for (int j = 0;j < n;j ++)
		{
			if (i & (1 << j))
			{
				tmp.push_back(a[j]);
			 } 
		}
		for(int i = 0;i < tmp.size() && flag;i ++)
        {
            for (int j = i+1;j < tmp.size();j ++)
            {
                if (e[tmp[i]][tmp[j]])
                {
                    flag = 0;
                    break;
                }
                // cout << tmp[i] << ' '<<tmp[j] << ' ' <<e[tmp[i]][tmp[j]] <<endl;
            }
        }
        if(flag)
        {
            ans ++;
        }
	}
    cout << ans;
	return 0;
} 
 // 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
// __builtin_popcount()
2025/7/27 14:22
加载中...