关注
也可以把边集状压存下来,用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);
}
}
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# xx岗简历求拷打 #
15648次浏览 143人参与
# 如何看待offer收割机的行为 #
1049919次浏览 6612人参与
# 开工第一帖 #
52981次浏览 933人参与
# 互联网回暖,腾讯要招5000人! #
25448次浏览 598人参与
# 有转正机会的小厂实习值得去吗? #
11497次浏览 115人参与
# 产运销实习日记 #
88341次浏览 688人参与
# 这些公司卡简历很严格 #
88870次浏览 395人参与
# 硬件人求职现状 #
506398次浏览 4803人参与
# 掌握什么AI技能,会为你的求职大大加分 #
12305次浏览 466人参与
# 聊聊这家公司值得去吗 #
886408次浏览 4720人参与
# 携程求职进展汇总 #
893469次浏览 5940人参与
# 求职季如何保持心态不崩 #
215119次浏览 1473人参与
# 面试反问你会问什么 #
170076次浏览 1745人参与
# 机械人还在等华为开奖吗? #
316445次浏览 1586人参与
# 你最讨厌面试被问什么 #
12313次浏览 137人参与
# 机械人的秋招小目标 #
29148次浏览 244人参与
# 如何看待应届生身份? #
229313次浏览 2297人参与
# 远程面试的尴尬瞬间 #
329548次浏览 1919人参与
# 金三银四,你有感觉到吗 #
697945次浏览 6099人参与
# 制造业的秋招小结 #
145194次浏览 2095人参与
字节跳动工作强度 1108人发布
查看20道真题和解析