Submission #404175

#TimeUsernameProblemLanguageResultExecution timeMemory
404175definitelynotmeeFriend (IOI14_friend)C++98
0 / 100
40 ms65540 KiB
#include <bits/stdc++.h>
#include "friend.h"
#define mp make_pair
#define mt make_tuple
#define ff first
#define ss second
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
const ll INFL = (1LL<<62)-1;
const int INF = (1<<30)-1;
const int MAXN = 0;

vector<int> cur;
int N;
int bt(int id, int confidence[], vector<vector<bool>> &isFriend){
    if(id == N){
        int resp = 0;
        for(int i : cur)
            resp+=confidence[i];
    }
    int ret = bt(id+1,confidence,isFriend);
    for(int i : cur){
        if(isFriend[i][id])
            return ret;
    }
    cur.push_back(id);
    ret = max(ret, bt(id+1,confidence,isFriend));
    cur.pop_back();
    return ret;
}

int findSample(int n, int confidence[], int host[], int protocol[]){
    N =n;
    vector<vector<bool>> isFriend(n, vector<bool> (n,0));
    vector<int> dp(n,0);
    for(int i = 1; i < n; i++){
        for(int j = 0; j < n; j++){
            isFriend[j][i] = isFriend[host[i]][j] && protocol[i];
            isFriend[i][j] = isFriend[j][i];
        }
        if(protocol[i] == 0 || protocol[i] == 2)
            isFriend[host[i]][i] = 1, isFriend[i][host[i]] = 1;
    }
    return bt(0,confidence,isFriend);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...