关注
也可以把边集状压存下来,用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);
}
}
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
11-04 19:37
桂林电子科技大学 运维工程师 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 你的秋招白月光和意难平公司 #
24087次浏览 209人参与
# 比亚迪求职进展汇总 #
815971次浏览 3142人参与
# 你想跟着什么样领导? #
16182次浏览 151人参与
# 机械人晒出你的简历 #
140332次浏览 865人参与
# 十一月总结 #
28322次浏览 259人参与
# 深信服求职进展汇总 #
238745次浏览 1803人参与
# 如果今天是你的last day,你会怎么度过? #
54731次浏览 311人参与
# 什么样的背景能拿SSP? #
121071次浏览 421人参与
# 机械人还在等华为开奖吗? #
283437次浏览 1447人参与
# 从夯到拉,评价编程语言 #
13207次浏览 106人参与
# 职场上哪些事情令人讨厌 #
28566次浏览 112人参与
# 硬件人秋招进展 #
251934次浏览 3941人参与
# 巨人网络工作体验 #
69632次浏览 499人参与
# 找实习是选平台还是选业务? #
17530次浏览 193人参与
# 考研失败就一定是坏事吗? #
154123次浏览 1090人参与
# 应届生进小公司有什么影响吗 #
102693次浏览 1090人参与
# 分享一个让你热爱工作的瞬间 #
49730次浏览 426人参与
# 影石Insta360求职进展汇总 #
164198次浏览 1331人参与
# 如何提高实习转正率? #
58879次浏览 412人参与
# 实习的内耗时刻 #
204414次浏览 1501人参与
快手公司福利 1244人发布