AcWing 1632. 暴力枚举
原题链接
中等
作者:
fei0825
,
2023-05-30 18:10:15
,
所有人可见
,
阅读 123
#include <iostream>
#include <cstring>
#include <algorithm>
#include <unordered_set>
#include <vector>
using namespace std;
typedef pair<int, int> PII;
const int N = 10010, M = 90010;
vector<unordered_set<int>> e(N);
int gender[N];
PII res[M];
int cnt;
int main(){
int n, m, a, b;
scanf("%d %d", &n, &m);
string s1, s2;
while( m-- ){
cin >> s1 >> s2;
a = stoi(s1), b = stoi(s2);
if( s1[0]=='-' ) a=-a, gender[a]=1;
if( s2[0]=='-' ) b=-b, gender[b]=1;
e[a].insert(b), e[b].insert(a);
}
scanf("%d", &m);
while( m-- ){
scanf("%d %d", &a, &b);
if( a<0 ) a=-a;
if( b<0 ) b=-b;
cnt = 0;
for( auto i: e[a] ){
if( i==b || gender[i]!=gender[a] ) continue;
for( auto j: e[i] ){
if( j==a || gender[j]!=gender[b] ) continue;
if( e[b].count(j) ){
res[cnt++] = {i, j};
}
}
}
sort(res, res+cnt, [](const auto& i, const auto& j){
if( i.first!=j.first ) return i.first < j.first;
return i.second < j.second;
});
printf("%d\n", cnt);
for( int i=0; i<cnt; i++ ) printf("%04d %04d\n", res[i].first, res[i].second);
}
return 0;
}