Submission #1075625

#TimeUsernameProblemLanguageResultExecution timeMemory
1075625mindiyakSplit the Attractions (IOI19_split)C++14
0 / 100
71 ms12516 KiB
#include "split.h" #include <vector> #include <iostream> #include <algorithm> #include <queue> using namespace std; vector<vector<int>> paths(1e5+5); vector<int> dist(1e5+5,-1); void dfs(int k,int length){ if(dist[k] != -1)return; dist[k] = length; for(int l:paths[k]){ dfs(l,length+1); } } vector<int> find_split(int n, int a, int b, int c, vector<int> p, vector<int> q) { int sub1 = 1; for(int i=0;i<p.size();i++){ paths[p[i]].push_back(q[i]); paths[q[i]].push_back(p[i]); } for(int i=0;i<n;i++)if(paths[i].size() > 2)sub1 = 0; vector<int> temp = {a,b,c}; sort(temp.begin(),temp.end()); a = temp[0];b = temp[1];c = temp[2]; if(sub1 == 1){ dfs(0,0); int pos = 0,len = -1; for(int i=0;i<n;i++){ if(dist[i] > len)pos = i; len = max(dist[i],len); } queue<int> pq; pq.push(pos); vector<int> ans(n,0); while(a > 0){ int k = pq.front();pq.pop(); if(ans[k] == 0){ ans[k] = 1; a--; for(int l:paths[k]){ pq.push(l); } } } while(b > 0){ int k = pq.front();pq.pop(); if(ans[k] == 0){ ans[k] = 2; b--; for(int l:paths[k]){ pq.push(l); } } } for(int i=0;i<n;i++){ if(ans[i] == 0){ ans[i] = 3; } } return ans; } if(a == 1){ queue<int> pq; pq.push(0); vector<int> ans(n,0); while(b > 0){ int node = pq.front();pq.pop(); if(ans[node] == 0){ ans[node] = 2; b--; for(int l:paths[node]){ pq.push(l); } } } for(int i=0;i<n;i++){ if(ans[i] == 0){ ans[i] = 1; break; } } for(int i=0;i<n;i++){ if(ans[i] == 0){ ans[i] = 3; } } return ans; } }

Compilation message (stderr)

split.cpp: In function 'std::vector<int> find_split(int, int, int, int, std::vector<int>, std::vector<int>)':
split.cpp:25:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   25 |  for(int i=0;i<p.size();i++){
      |              ~^~~~~~~~~
split.cpp:31:27: warning: control reaches end of non-void function [-Wreturn-type]
   31 |  vector<int> temp = {a,b,c};
      |                           ^
#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...