Submission #1325256

#TimeUsernameProblemLanguageResultExecution timeMemory
1325256Faggi친구 (IOI14_friend)C++20
0 / 100
1 ms332 KiB
#include <bits/stdc++.h>
#define ll long long
#define sz(x) int(x.size())
#define forn(i, n) for (i = 0; i < n; i++)
#define all(x) x.begin(), x.end()
#define pb push_back
#define mp make_pair
#define fr first
#define se second
using namespace std;

const int MAXN = 1001;

vector<ll> grafo[MAXN];
ll vis[MAXN], match[MAXN], cant;

bool dfs(ll nod)
{
    if (nod == -1)
        return 1;
    if (vis[nod])
        return 0;
    vis[nod] = 1;
    for (auto k : grafo[nod])
    {
        if (dfs(match[k]))
        {
            match[k] = nod;
            match[nod] = k;
            cant++;
            return 1;
        }
    }
    return 0;
}

int findSample(int n, int confidence[], int host[], int protocol[])
{

    ll i;
    for (i = 1; i < n; i++)
    {
        if (protocol[i] == 0)
        {
            grafo[i].pb(host[i]);
            grafo[host[i]].pb(i);
        }
        else
        {
            for (auto k : grafo[host[i]])
            {
                grafo[i].pb(k);
                grafo[k].pb(i);
            }
        }
    }

    for (i = 0; i <= n; i++)
        match[i] = -1;

    for (i = 0; i < n; i++)
    {
        memset(vis, 0, sizeof(vis));
        dfs(i);
    }

    return cant;
}
#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...