제출 #1140061

#제출 시각아이디문제언어결과실행 시간메모리
1140061c32ardashCutting a rectangle (LMIO18_staciakampis)C++20
25 / 100
252 ms123068 KiB
#include <bits/stdc++.h>
#define int long long

using namespace std;

const int KMAX=1e5+5, AMAX=5e6+5;
int viz[KMAX], a[KMAX], b[KMAX], k;
vector<int> adj[AMAX];
set<int> p;

int get_other(int i, int x)
{
    if(a[i]!=x)
        return a[i];
    return b[i];
}

void DFS(int x, int y, int nviz)
{
    if(nviz==k)
    {
        p.insert(min(x, y));
        return;
    }
    if(x<AMAX)
        for(auto i:adj[x])
            if(!viz[i])
            {
                viz[i]=1;
                DFS(x, y+get_other(i, x), nviz+1);
                viz[i]=0;
            }
    if(y<AMAX)
        for(auto i:adj[y])
            if(!viz[i])
            {
                viz[i]=1;
                DFS(x+get_other(i, y), y, nviz+1);
                viz[i]=0;
            }
}

signed main()
{
    cin>>k;
    for(int i=1;i<=k;i++)
    {
        cin>>a[i]>>b[i];
        adj[a[i]].push_back(i);
        adj[b[i]].push_back(i);
    }
    if(k<=10)
    {
        for(int i=1;i<=k;i++)
        {
            viz[i]=1;
            DFS(a[i], b[i], 1);
            viz[i]=0;
        }
        cout<<p.size()<<'\n';
        for(auto x:p)
            cout<<x<<'\n';
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...