关注
也可以把边集状压存下来,用set判重就好。 #include <bits/stdc++.h>
using namespace std;
const int N = 10;
int G[N][N];
vector<pair<int, int>> edges;
map<pair<int, int>, int> dic;
int getid(int x, int y)
{
if (x > y) swap(x, y);
assert(x < y);
if (dic[{x, y}]) return dic[{x, y}];
return dic[{x, y}] = dic.size();
}
long long check()
{
long long hash = 0;
for (auto& e : edges)
{
int u = p[e.first], v = p[e.second];
if (G[u][v])
hash |= 1LL << getid(u, v);
else
return -1;
}
return hash;
}
int main()
{
int n, a, b;
while (~scanf("%d%d%d", &n, &a, &b))
{
memset(G, 0, sizeof(G));
dic.clear();
edges.clear();
for (int i = 0, u, v; i < a; i++)
{
scanf("%d%d", &u, &v);
--u, --v;
edges.emplace_back(u, v);
}
for (int i = 0, u, v; i < b; i++)
{
scanf("%d%d", &u, &v);
--u, --v;
G[u][v] = G[v][u] = 1;
getid(u, v);
}
for (int i = 0; i < n; i++) p[i] = i;
set<long long> s;
do
{
int tmp = check();
if (~tmp) s.insert(tmp);
} while (next_permutation(p, p + n));
int ans = s.size();
printf("%d\n", ans);
}
}
查看原帖
点赞 评论
相关推荐
05-14 15:17
青岛滨海学院 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 你觉得实习能学到东西吗 #
18856次浏览 463人参与
# 秋招什么时候开投比较合适? #
8234次浏览 168人参与
# 现代汽车前瞻技术研发急速编程挑战赛 #
22649次浏览 188人参与
# 实习,不懂就问 #
30659次浏览 529人参与
# 软开人,秋招你打算投哪些公司呢 #
101155次浏览 951人参与
# 如何准备秋招 #
12538次浏览 224人参与
# 运营人求职交流聚集地 #
141208次浏览 989人参与
# 每个月的工资都是怎么分配的? #
15517次浏览 328人参与
# 你觉得现在还能进互联网吗? #
4901次浏览 102人参与
# 预测一下26届秋招形势 #
26531次浏览 247人参与
# 你们公司几号发工资 #
19152次浏览 129人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
28240次浏览 456人参与
# 晒一晒你收到的礼盒 #
70322次浏览 403人参与
# 打工人的精神状态 #
54371次浏览 993人参与
# 硬件应届生薪资是否普遍偏低? #
72714次浏览 511人参与
# 高考出分的那一天,我__ #
17309次浏览 269人参与
# 大疆今年的机械笔试难吗? #
41549次浏览 456人参与
# 来聊聊你认为的薪资天花板是哪家? #
31002次浏览 175人参与
# 牛客十周岁生日快乐 #
145263次浏览 1613人参与
# 机械实习一天多少钱合适? #
29058次浏览 177人参与
# 大家实习每天都在干啥 #
82958次浏览 506人参与