Submission #1081454

#TimeUsernameProblemLanguageResultExecution timeMemory
1081454LCJLYThe Ties That Guide Us (CEOI23_incursion)C++17
0 / 100
3045 ms7560 KiB
#include "incursion.h" #include <bits/stdc++.h> //#include "sample_grader.cpp" using namespace std; //#define int long long //#define ld long double #define show(x,y) cout << y << " " << #x << endl; #define show2(x,y,i,j) cout << y << " " << #x << " " << j << " " << #i << endl; #define show3(x,y,i,j,p,q) cout << y << " " << #x << " " << j << " " << #i << " " << q << " " << #p << endl; #define show4(x,y) for(auto it:y) cout << it << " "; cout << #x << endl; typedef pair<int,int>pii; typedef pair<pii,int>pi2; int n; vector<int>adj[45005]; int pp[45005]; void dfs(int index, int par){ for(auto it:adj[index]){ if(it==par) continue; pp[it]=index; dfs(it,index); } } vector<int>mark(vector<pair<int, int>> F, int safe){ n=F.size()+1; for(int x=0;x<n-1;x++){ adj[F[x].first].push_back(F[x].second); adj[F[x].second].push_back(F[x].first); } int rt=0; for(int x=1;x<=n;x++){ if(adj[x].size()==2){ dfs(x,-1); rt=x; } } vector<int>ans(n,0); int cur=safe; while(1){ ans[cur-1]=1; if(cur==rt) break; cur=pp[cur]; } return ans; } //visit() void locate(vector<pair<int, int>> F, int curr, int t){ n=F.size()+1; for(int x=0;x<=n;x++){ adj[x].clear(); } for(int x=0;x<n-1;x++){ adj[F[x].first].push_back(F[x].second); adj[F[x].second].push_back(F[x].first); } memset(pp,0,sizeof(pp)); for(int x=1;x<=n;x++){ if(adj[x].size()==2){ dfs(x,-1); } } bool done[n+5]; memset(done,0,sizeof(done)); while(1){ if(t==0){ //go up done[curr]=true; t=visit(pp[curr]); curr=pp[curr]; } else{ //go down bool take=false; for(auto it:adj[curr]){ if(it==pp[curr]) continue; if(done[it]) continue; t=visit(it); curr=it; take=true; } if(!take) return; } } }

Compilation message (stderr)

interface.cpp: In function 'int main()':
interface.cpp:44:55: warning: comparison of integer expressions of different signedness: 'size_t' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   44 |     if(fread(T.data(), sizeof(int), 2 * N - 2, stdin) != 2 * N - 2) exit(0);
      |        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
interface.cpp:50:33: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   50 |         int l = (numbers.size() == N ? N : 0);
      |                  ~~~~~~~~~~~~~~~^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...