关注
也可以把边集状压存下来,用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);
}
}
查看原帖
点赞 评论
相关推荐
牛客热帖
更多
正在热议
更多
# 实习生的蛐蛐区 #
999065次浏览 5081人参与
# 国企是春招机械人最好的去处吗 #
153918次浏览 585人参与
# 发面经攒人品 #
8873342次浏览 98475人参与
# 硬件人的简历怎么写 #
350889次浏览 3147人参与
# 27届实习投递记录 #
163612次浏览 1662人参与
# AI了,我在打一种很新的工 #
208692次浏览 2236人参与
# 万物皆可发面经 #
4717次浏览 58人参与
# 实习,不懂就问 #
229534次浏览 1763人参与
# 运营人求职交流聚集地 #
260326次浏览 1135人参与
# 秋招投递攻略 #
296093次浏览 2643人参与
# 你的mentor是什么样的人? #
67258次浏览 852人参与
# 实习生至暗时刻 #
93716次浏览 942人参与
# 实习如何「偷」产出? #
772524次浏览 8612人参与
# 从mentor身上学到了__ #
67751次浏览 949人参与
# 父母对你找工作是助力还是阻力? #
52744次浏览 467人参与
# 你觉得mentor喜欢什么样的实习生 #
64187次浏览 1090人参与
# 我和mentor的爱恨情仇 #
121596次浏览 1047人参与
# 非技术投递记录 #
741716次浏览 6979人参与
# 找实习记录 #
282547次浏览 1664人参与
# 第一次找实习,我建议__ #
90038次浏览 923人参与
查看15道真题和解析