Submission #142747

#TimeUsernameProblemLanguageResultExecution timeMemory
142747liwiMousetrap (CEOI17_mousetrap)C++11
0 / 100
434 ms76268 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace std; using namespace __gnu_pbds; typedef tree<int, null_type, less<int>, rb_tree_tag,tree_order_statistics_node_update> ordered_set; #define scan(x) do{while((x=getchar())<'0'); for(x-='0'; '0'<=(_=getchar()); x=(x<<3)+(x<<1)+_-'0');}while(0) char _; #define complete_unique(a) a.erase(unique(a.begin(),a.end()),a.end()) #define all(a) a.begin(),a.end() #define println printf("\n"); #define readln(x) getline(cin,x); #define pb push_back #define endl "\n" #define INT_INF 0x3f3f3f3f #define LL_INF 0x3f3f3f3f3f3f3f3f #define MOD 1000000007 #define mp make_pair #define fastio cin.tie(0); cin.sync_with_stdio(0); #define MAXN 1000005 typedef unsigned long long ull; typedef long long ll; typedef long double ld; typedef unordered_map<int,int> umii; typedef pair<int,int> pii; typedef pair<double,double> pdd; typedef pair<ll,ll> pll; typedef pair<int,pii> triple; typedef int8_t byte; mt19937 g1(time(0)); int randint(int a, int b){return uniform_int_distribution<int>(a, b)(g1);} ll randlong(ll a,ll b){return uniform_int_distribution<long long>(a, b)(g1);} ll gcd(ll a, ll b){return b == 0 ? a : gcd(b, a % b);} ll lcm(ll a, ll b){return a*b/gcd(a,b);} ll fpow(ll b, ll exp, ll mod){if(exp == 0) return 1;ll t = fpow(b,exp/2,mod);if(exp&1) return t*t%mod*b%mod;return t*t%mod;} ll divmod(ll i, ll j, ll mod){i%=mod,j%=mod;return i*fpow(j,mod-2,mod)%mod;} int num_nodes,T,M; ll dp[MAXN],res; bool marked[MAXN]; vector<int> connections[MAXN]; void mark(int node, int prev){ if(node == T){ marked[node] = true; return; } for(int check:connections[node]){ if(check == prev) continue; mark(check,node); if(marked[check]){ marked[node] = true; break; } } } ll calc(int node, int prev){ ll gd = -1; for(int check:connections[node]){ if(marked[check] || check == prev) continue; gd = max(gd,calc(check,node)); } return dp[node] = gd+1; } void solve(int node, int prev){ if(node == T) return; res+=calc(node,prev); for(int check:connections[node]){ if(check == prev || !marked[check]) continue; solve(check,node); } } int main(){ scanf("%d %d %d",&num_nodes,&T,&M); for(int i=1; i<num_nodes; i++){ int a,b; scanf(" %d %d",&a,&b); connections[a].pb(b); connections[b].pb(a); } mark(M,-1); solve(M,-1); printf("%lld\n",res); }

Compilation message (stderr)

mousetrap.cpp: In function 'int main()':
mousetrap.cpp:84:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d %d %d",&num_nodes,&T,&M);
  ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mousetrap.cpp:86:17: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   int a,b; scanf(" %d %d",&a,&b);
            ~~~~~^~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...