Submission #244502

# Submission time Handle Problem Language Result Execution time Memory
244502 2020-07-04T07:48:11 Z tqbfjotld Potemkin cycle (CEOI15_indcyc) C++14
50 / 100
1000 ms 1272 KB
#include <bits/stdc++.h>
using namespace std;

int n,e;
vector<int> adjl[1005];
vector<int> cur;
int curpos[1005];

int dfs(int node, int parent){
    //printf("%d %d\n",node+1,curpos[node]);
    int k= -1;
    for (auto x : adjl[node]){
        if (x==parent) continue;
        k = max(k,curpos[x]);
    }
    //printf("k: %d\n",k);
    if (k!=-1 && curpos[node]-k<3){
        return -1;
    }
    else if (k!=-1){
        cur.push_back(node);
       return k;
    }
    else{
        for (auto x : adjl[node]){
            if (x==parent) continue;
            curpos[x] = curpos[node]+1;
            //printf("set %d\n",1+x);
            int res = dfs(x,node);
            //printf("received %d\n",res);
            if (res>0){
                cur.push_back(node);
                return res==curpos[node]?-2:res;
            }
            if (res==-2) return -2;
            curpos[x] = -1;

            //printf("reset %d\n",1+x);
        }
        return -1;
    }
}

int main(){
    scanf("%d%d",&n,&e);
    memset(curpos,-1,sizeof(curpos));
    for (int x = 0; x<e; x++){
        int a,b;
        scanf("%d%d",&a,&b);
        a--;b--;
        adjl[a].push_back(b);
        adjl[b].push_back(a);
    }
    for (int x = 0; x<n; x++){
        curpos[x] = 1;
        if (dfs(x,-1)==-2){
            for (auto k : cur){
                printf("%d ",k+1);
            }
            return 0;
        }
        curpos[x] = -1;
    }
    printf("no");

}

Compilation message

indcyc.cpp: In function 'int main()':
indcyc.cpp:45:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d",&n,&e);
     ~~~~~^~~~~~~~~~~~~~
indcyc.cpp:49:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d%d",&a,&b);
         ~~~~~^~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 4 ms 384 KB Output is correct
3 Correct 4 ms 384 KB Output is correct
4 Correct 5 ms 384 KB Output is correct
5 Correct 5 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 5 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4 ms 384 KB Output is correct
2 Correct 5 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 5 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 6 ms 384 KB Output is correct
2 Correct 193 ms 504 KB Output is correct
# Verdict Execution time Memory Grader output
1 Execution timed out 1096 ms 384 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 8 ms 384 KB Output is correct
2 Execution timed out 1089 ms 384 KB Time limit exceeded
# Verdict Execution time Memory Grader output
1 Execution timed out 1096 ms 896 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 388 ms 640 KB Output is correct
2 Execution timed out 1092 ms 768 KB Time limit exceeded
# Verdict Execution time Memory Grader output
1 Execution timed out 1087 ms 1272 KB Time limit exceeded
2 Halted 0 ms 0 KB -