Submission #1363505

#TimeUsernameProblemLanguageResultExecution timeMemory
1363505hsuan._.0528Social Engineering (EGOI22_socialengineering)C++20
Compilation error
0 ms0 KiB
#include<bits/stdc++.h>
using namespace std;
#define LL long long
#define pii pair<int, int>
#define F first
#define S second
const int maxn =5e5+10;
const int mod=1e9+7;


int dp[20][100000];
vector<pii> v[maxn];

int dfs(int x, int mask){
    if(dp[x][mask] != -1)  return dp[x][mask];
    
    bool b=0;
    if(x==1){
        for(auto[y, id]: v[x]){
            if( ((1<<id) & mask) == 0){
                if( dfs(y, ((1<<id) | mask) ) == 1)  b=1;
            }
        }
    }else{
        b=1;
        for(auto[y, id]: v[x]){
            if( ((1<<id) & mask) == 0){
                if( dfs(y, ((1<<id) | mask) ) == 0)  b=0;
            }
        }
    }
    dp[x][mask]=b;
    return b;
}


void MakeMove(int v);

int GetMove();

void SocialEngineering(int n, int m, vector<pair<int,int>> edges){
    for(int i=0; i<m; i++){
        v[ edges[i].F ].push_back( {edges[i].S, i} );
        v[ edges[i].S ].push_back( {edges[i].F, i} );
    }
    memset(dp, -1, sizeof(dp));
    if (dfs(1, 0) == 1) {
        return;
    }
  
    int cur=1, mask=0;
    while(true){
        int a=GetMove();
        for(auto[y, id] : v[1]){
            if(y==a){
                mask |= (1<<id);
                 break;
            }
        }
        cur=a;
        if(cur==0)  return;

        for(auto[y, id]: v[cur]){
            if( ((1<<id) & mask) == 0)
                if( dfs(y, ((1<<id) | mask) ) == 0){
                    cur=y;  mask = ((1<<id) | mask);
                    break;
                }
        }
        MakeMove(cur);
        while(cur!=1){
            for(auto[y, id]: v[cur]){
                if( ((1<<id) & mask) == 0)
                    if( dfs(y, ((1<<id) | mask) ) == 0){
                        cur=y;  mask = ((1<<id) | mask);
                        break;
                    }
            }
            MakeMove(cur);
        }
    }
  
}


/*
signed main(){
    //ios_base::sync_with_stdio(0);  cin.tie(0);

    
    return 0;
}*/

Compilation message (stderr)

/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crt1.o: in function `_start':
(.text+0x1b): undefined reference to `main'
/usr/bin/ld: /tmp/cc1Dx1MH.o: in function `SocialEngineering(int, int, std::vector<std::pair<int, int>, std::allocator<std::pair<int, int> > >)':
Main.cpp:(.text+0x4c1): undefined reference to `GetMove()'
/usr/bin/ld: Main.cpp:(.text+0x575): undefined reference to `MakeMove(int)'
/usr/bin/ld: Main.cpp:(.text+0x5ef): undefined reference to `MakeMove(int)'
/usr/bin/ld: Main.cpp:(.text+0x613): undefined reference to `MakeMove(int)'
/usr/bin/ld: Main.cpp:(.text+0x622): undefined reference to `MakeMove(int)'
collect2: error: ld returned 1 exit status