Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int bestTrio(int n, vector<int> ta, vector<int> tb) {
- vector<int> a[n + 1];
- for(int i = 0; i < ta.size(); i++) {
- a[ta[i]].push_back(tb[i]);
- a[tb[i]].push_back(ta[i]);
- }
- for(int i = 1; i <= n; i++) {
- sort(a[i].begin(), a[i].end());
- }
- int mn = 4 * n;
- int l = 0,r = 0;
- auto fun = [&] (int p1, int p2, int p3) {
- mn = min(mn, (int)a[p1].size() + (int)a[p2].size() + (int)a[p3].size() - 6);
- };
- for(int i = 1; i <= n; i++) {
- for(auto j : a[i]) {
- l = 0, r = 0;
- while(l < a[i].size() && r < a[j].size()) {
- if(a[i][l] < a[j][r]) {
- l++;
- } else if(a[i][l] > a[j][r]) {
- r++;
- } else {
- fun(i, j, a[i][l]);
- l++;
- r++;
- }
- }
- }
- }
- return (mn == 4 * n ? -1 : mn);
- }
Advertisement
Add Comment
Please, Sign In to add comment