Submission #714780

#TimeUsernameProblemLanguageResultExecution timeMemory
714780Ferid20072020Stranded Far From Home (BOI22_island)C++14
20 / 100
218 ms38096 KiB
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //#pragma GCC optimize("O3,unroll-loops") //#pragma GCC target("avx,avx2,fma") #include <bits/stdc++.h> using namespace std; #define ll long long #define ull unsigned long long #define ld long double #define ui unsigned int #define f first #define s second #define ins insert #define pb push_back #define mp make_pair #define ln '\n' #define int ll #define pii pair<int , int> #define INF LLONG_MAX #define vv(a) vector<a> #define pp(a, b) pair<a, b> #define pq(a) priority_queue<a> #define qq(a) queue<a> #define ss(a) set<a> #define mss(a) multiset<a> #define mm(a, b) map<a, b> #define mmm(a , b) multimap<a , b> #define sz(x) (x).size() #define all(x) (x).begin() , (x).end() #define fastio \ ios_base::sync_with_stdio(0); \ cin.tie(0); \ cout.tie(0); ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// const int MAX = 2e5 + 3; int n , m; int tot[MAX]; vv(vv(int)) g(MAX); vv(vv(pii)) g1(MAX); vv(int) color(MAX); vv(int) level(MAX); vv(int) pref(MAX); vv(int) parent(MAX); int cnt = 0 , total = 0; void init(){ cnt = 1; total = 0; for(int i=1 ; i<MAX ; i++){ color[i] = 0; } } void DFS(int src){ //cout << src << ln; color[src] = 1; for(auto to : g1[src]){ if(color[to.s] == 0 && to.f <= total){ cnt++; total += to.f; DFS(to.s); } } } void DFS1(int src , int lvl){ level[src] = lvl; for(auto to : g[src]){ if(to > src){ parent[to] = src; DFS1(to , lvl+1); } } } void solve(){ int Max = -1e9; cin >> n >> m; if(n <= 2000 && m <= 2000){ for(int i=1 ; i<=n ; i++){ cin >> tot[i]; } for(int i=0 ; i<m ; i++){ int u , v; cin >> u >> v; g1[u].pb({tot[v] , v}); g1[v].pb({tot[u] , u}); } for(int i=1 ; i<=n ; i++){ sort(all(g1[i])); } for(int i=1 ; i<=n ; i++){ init(); total = tot[i]; DFS(i); while(cnt < n){ int cnt1 = cnt; for(int j=1 ; j<=n ; j++){ if(color[j] == 1){ DFS(j); } } if(cnt == cnt1){ break; } } if(cnt == n){ cout << 1; } else{ cout << 0; } } } else{ for(int i=1 ; i<=n ; i++){ cin >> tot[i]; Max = max(Max , tot[i]); pref[i] = tot[i]; } for(int i=0 ; i<m ; i++){ int u , v; cin >> u >> v; g[u].pb(v); g[v].pb(u); } DFS1(1 , 1); vv(pii) Sort; for(int i=1 ; i<=n ; i++){ Sort.pb({level[i] , i}); } sort(all(Sort)); reverse(all(Sort)); for(int i=0 ; i<Sort.size() ; i++){ pref[parent[Sort[i].s]] += pref[Sort[i].s]; } reverse(all(Sort)); for(int i=0 ; i<Sort.size() ; i++){ if(tot[parent[Sort[i].s]] <= pref[Sort[i].s]){ pref[Sort[i].s] = pref[parent[Sort[i].s]]; } } //for(int i=1 ; i<=n ; i++){ // cout << pref[i] << ln; //} vv(int) ans(n+3 , 0); ans[1] = 1; int node = 1; for(int i=2 ; i<=n ; i++){ if(pref[i] >= Max){ ans[i] = 1; } } for(int i=1 ; i<=n ; i++){ cout << ans[i]; } } } signed main(){ fastio int t = 1; //cin >> t; while(t--){ solve(); } return 0; }

Compilation message (stderr)

island.cpp: In function 'void solve()':
island.cpp:138:24: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  138 |         for(int i=0 ; i<Sort.size() ; i++){
      |                       ~^~~~~~~~~~~~
island.cpp:142:24: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  142 |         for(int i=0 ; i<Sort.size() ; i++){
      |                       ~^~~~~~~~~~~~
island.cpp:152:13: warning: unused variable 'node' [-Wunused-variable]
  152 |         int node = 1;
      |             ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...