제출 #375096

#제출 시각아이디문제언어결과실행 시간메모리
3750968e7Meetings (JOI19_meetings)C++14
17 / 100
3067 ms1604 KiB
//Challenge: Accepted #include <iostream> #include <algorithm> #include <utility> #include <vector> #include "meetings.h" #define ll long long #define maxn 3005 #define pii pair<int, int> #define ff first #define ss second #define io ios_base::sync_with_stdio(0);cin.tie(0); using namespace std; int tot; vector<pii> ans; vector<int> adj[maxn]; bool found[maxn]; void dfs(int n, vector<int> &add) { found[n] = 1; add.push_back(n); for (int v:adj[n]) { if (!found[v]) { dfs(v, add); } } } int getcon(int root, vector<int> v) { if (v.size() == 1) return v[0]; int ret = Query(root, v[0], v[1]); for (int i = 2;i < v.size();i++) { if (ret != v[i]) ret = Query(root, ret, v[i]); } return ret; } void solve(int root, vector<int> v) { if (v.size() == 0) return; if (v.size() == 1) { ans.push_back(make_pair(root, v[0])); return; } for (int i = 0;i < v.size();i++) adj[v[i]].clear(), found[v[i]] = 0; for (int i = 0;i < v.size();i++) { for (int j = i + 1;j < v.size();j++) { if(Query(root, v[i], v[j]) != root) { adj[v[i]].push_back(v[j]); adj[v[j]].push_back(v[i]); } } } for (int i = 0;i < v.size();i++) { if (!found[v[i]]) { vector<int> sub; dfs(v[i], sub); int to = getcon(root, sub); ans.push_back(make_pair(root, to)); vector<int> nxt; for (int j:sub) { if (j != to) nxt.push_back(j); } solve(to, nxt); } } } void Solve(int N) { tot = N; vector<int> v; for (int i = 1;i < tot;i++) v.push_back(i); solve(0, v); for (auto i:ans) { if (i.ff > i.ss) swap(i.ff, i.ss); Bridge(i.ff, i.ss); } }

컴파일 시 표준 에러 (stderr) 메시지

meetings.cpp: In function 'int getcon(int, std::vector<int>)':
meetings.cpp:33:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   33 |  for (int i = 2;i < v.size();i++) {
      |                 ~~^~~~~~~~~~
meetings.cpp: In function 'void solve(int, std::vector<int>)':
meetings.cpp:44:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   44 |  for (int i = 0;i < v.size();i++) adj[v[i]].clear(), found[v[i]] = 0;
      |                 ~~^~~~~~~~~~
meetings.cpp:45:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   45 |  for (int i = 0;i < v.size();i++) {
      |                 ~~^~~~~~~~~~
meetings.cpp:46:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   46 |   for (int j = i + 1;j < v.size();j++) {
      |                      ~~^~~~~~~~~~
meetings.cpp:53:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   53 |  for (int i = 0;i < v.size();i++) {
      |                 ~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...