题目:https://pintia.cn/problem-sets/994805260223102976/problems/1038429385296453632
主要是三个vector:lie、v、a,一个存撒谎的人,用来判断人数,一个用来存原始投票,最后一个用来存撒谎的性质
代码
#include<cstdio>#include<iostream>#include<vector>#include<cmath>using namespace std;int main(){int n;scanf("%d", &n);vector<int> v(n + 1);for(int i = 1; i <= n; i++) scanf("%d", &v[i]);//分别假设i和j是狼人for(int i = 1; i <= n; i++){for(int j = i + 1; j <= n; j++){vector<int> lie, a(n + 1, 1);a[i] = a[j] = -1;for(int k = 1; k <= n; k++){if(v[k] * a[abs(v[k])] < 0) lie.push_back(k);}if(lie.size() == 2 && a[lie[0]] + a[lie[1]] == 0){cout << i << " " << j;return 0;}}}cout<< "No Solution";return 0;}
