思路:
题目很简单,没有什么坑,就是实现去重和查找这两个操作而已。可以用set,但是我用的是vector。
在vector容器中,可以用
sort(v[i].begin(),v[i].end());
v[i].erase(unique(v[i].begin(),v[i].end()),v[i].end());
来排序和去重。用binary_search()来查找一个元素是否存在。(两者时间复杂度貌似都是nlog(n))
AC 代码:
#include<bits/stdc++.h>
using namespace std;
const int N = 100,INF = 0x3f3f3f3f;
int n,m;
double nc,nt;
vector<int> v[N];
void work(int a,int b) {
if(v[a].size() > v[b].size()) {
work(b,a);
return ;
}
for(int i = 0; i < v[a].size(); i ++) {
if(binary_search(v[b].begin(),v[b].end(),v[a][i]))
nc ++;
}
nt &#