Submission #164055

# Submission time Handle Problem Language Result Execution time Memory
164055 2019-11-17T08:34:12 Z oolimry Airline Route Map (JOI18_airline) C++14
Compilation error
0 ms 0 KB
#include "Alicelib.h"
#include <bits/stdc++.h>
using namespace std;

void Alice( int n, int m, int A[], int B[] ){
	int cnt = 0;
	vector<int> nums;
	for(int i = 0;i < 1024;i++){
		int bits = 0;
		for(int j = 1;j < 1024;j *= 2){
			if((i & j) != 0) bits++;
		}
		if(bits >= 2){
			nums.push_back(i);
		}
		if(nums.size() == n) break;
	}
	typedef pair<int,int> ii;
	vector<ii> edges;
	for(int i = 0;i < m;i++){
		edges.push_back(ii(A[i],B[i]));
	}
	
	int x = n+10;
	int y = n+11;
	int anchor[10];
	for(int i = 0;i < 10;i++) anchor[i] = n+i;
	
	edges.push_back(ii(x,y));
	for(int i = 0;i < 10;i++){
		edges.push_back(ii(y,anchor[i]));
	}
	
	for(int i = 1;i < 9;i++){
		edges.push_back(ii(anchor[0],anchor[i]));
		edges.push_back(ii(anchor[i],anchor[i+1]));
	}
	
	
	for(int i = 0;i < n;i++){
		int k = nums[i];
		for(int j = 0;j < 10;j++){
			if((k & (1 << j)) != 0){
				edges.push_back(ii(i,anchor[j]));
			}
		}
	}
	/*
	for(ii x : edges){
		cout << x.first << " " << x.second << "\n";
	}
	//*/
	InitG(n+12,edges.size());
	for(int i = 0;i < edges.size();i++){
		MakeG(i,edges[i].first,edges[i].second);
	}
	//cout << "\n\n";
}
#include "Boblib.h"
#include <bits/stdc++.h>
using namespace std;

struct hashii
{
    size_t operator()(const pair<int,int>* x) const {
        return x.first ^ x.second;
    }
};

void Bob( int n, int m, int C[], int D[] ){
	int on = n - 12;
	vector<int> nums;
	typedef pair<int,int> ii;
	unordered_set<ii, hashii> edges;
	for(int i = 0;i < 1024;i++){
		int bits = 0;
		for(int j = 1;j < 1024;j *= 2){
			if((i & j) != 0) bits++;
		}
		if(bits >= 2){
			nums.push_back(i);
		}
		if(nums.size() == on) break;
	}
	
	vector<int> adj[n];
	for(int i = 0;i < m;i++){
		adj[C[i]].push_back(D[i]);
		adj[D[i]].push_back(C[i]);
		//cout << C[i] << " " << D[i] << "\n";
		edges.insert(ii(C[i],D[i]));
		edges.insert(ii(D[i],C[i]));
	}
	int x, y;
	for(int i = 0;i < n;i++){
		if(adj[i].size() == 1){
			x = i;
			y = adj[i][0];
			break;
		}
	}
	
	//cout << x << "\n" << y << "\n";
	
	vector<int> aa;
	for(int i = 0;i < n;i++){
		if(i == x || i == y){
			continue;
		}
		if(edges.find(ii(i,y)) != edges.end()){
			aa.push_back(i);
		}
	}
	set<int> anchorSet;
	for(int k : aa){
		//cout << k << " ";
		anchorSet.insert(k);
	}
	
	int anchor[10];
	
	fill(anchor,anchor+10,-1);
	for(int i = 0;i < 10;i++){
		int cnt = 0;
		for(int j = 0;j < 10;j++){
			if(edges.find(ii(aa[i],aa[j])) != edges.end()){
				cnt++;
			}
		}
		if(cnt == 8){
			anchor[0] = aa[i];
		}
		else if(cnt == 1){
			anchor[9] = aa[i];
		}
	}
	
	int cur = anchor[9];
	for(int i = 9;i >= 2;i--){
		for(int v : adj[cur]){
			if(v != anchor[0] && anchorSet.find(v) != anchorSet.end()){
				if(i == 9 || v != anchor[i+1]){
					cur = v;
					anchor[i-1] = cur;
					break;
				} 
			}
		}
	}
	bool extras[n];
	fill(extras,extras+n,false);
	unordered_map<int,int> anchorMap;
	//cout << "\n";
	for(int i =0 ;i < 10;i++){
		//cout << anchor[i] << " ";
		extras[anchor[i]] = true;
		anchorMap[anchor[i]] = i;
	}
	extras[x] = true;
	extras[y] = true;
	//cout << "\n";
	unordered_map<int,int> normalMap;
	for(int u = 0;u < n;u++){
		int value = 0;
		if(extras[u]) continue;
		for(int v : adj[u]){
			if(!extras[v]) continue;
			
			int bit = anchorMap[v];
			value |= (1 << bit);
		}
		int pos = lower_bound(nums.begin(),nums.end(),value) - nums.begin();
		normalMap[u] = pos;
		//cout << u << " " << pos << "\n";
	}
	vector<ii> finalEdges;
	for(int i = 0;i < m;i++){
		int u = C[i];
		int v = D[i];
		if(extras[u] || extras[v]) continue;
		finalEdges.push_back(ii(normalMap[u],normalMap[v]));
	}
	
	//cout << "\n";
	//for(ii k : finalEdges) cout << k.first << " " << k.second << "\n";
	
	InitMap(on, finalEdges.size());
	for(ii k : finalEdges) MakeMap(k.first,k.second);
}

Compilation message

Alice.cpp: In function 'void Alice(int, int, int*, int*)':
Alice.cpp:16:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if(nums.size() == n) break;
      ~~~~~~~~~~~~^~~~
Alice.cpp:54:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i = 0;i < edges.size();i++){
                ~~^~~~~~~~~~~~~~
Alice.cpp:6:6: warning: unused variable 'cnt' [-Wunused-variable]
  int cnt = 0;
      ^~~

Bob.cpp: In member function 'size_t hashii::operator()(const std::pair<int, int>*) const':
Bob.cpp:8:18: error: request for member 'first' in 'x', which is of pointer type 'const std::pair<int, int>*' (maybe you meant to use '->' ?)
         return x.first ^ x.second;
                  ^~~~~
Bob.cpp:8:28: error: request for member 'second' in 'x', which is of pointer type 'const std::pair<int, int>*' (maybe you meant to use '->' ?)
         return x.first ^ x.second;
                            ^~~~~~
In file included from /usr/include/c++/7/bits/hashtable.h:35:0,
                 from /usr/include/c++/7/unordered_map:47,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:117,
                 from Bob.cpp:2:
/usr/include/c++/7/bits/hashtable_policy.h: In instantiation of 'struct std::__detail::__is_noexcept_hash<std::pair<int, int>, hashii>':
/usr/include/c++/7/type_traits:143:12:   required from 'struct std::__and_<std::__is_fast_hash<hashii>, std::__detail::__is_noexcept_hash<std::pair<int, int>, hashii> >'
/usr/include/c++/7/type_traits:154:31:   required from 'struct std::__not_<std::__and_<std::__is_fast_hash<hashii>, std::__detail::__is_noexcept_hash<std::pair<int, int>, hashii> > >'
/usr/include/c++/7/bits/unordered_set.h:98:63:   required from 'class std::unordered_set<std::pair<int, int>, hashii>'
Bob.cpp:16:28:   required from here
/usr/include/c++/7/bits/hashtable_policy.h:87:34: error: no match for call to '(const hashii) (const std::pair<int, int>&)'
  noexcept(declval<const _Hash&>()(declval<const _Key&>()))>
           ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
Bob.cpp:7:12: note: candidate: size_t hashii::operator()(const std::pair<int, int>*) const
     size_t operator()(const pair<int,int>* x) const {
            ^~~~~~~~
Bob.cpp:7:12: note:   no known conversion for argument 1 from 'const std::pair<int, int>' to 'const std::pair<int, int>*'
In file included from /usr/include/c++/7/bits/move.h:54:0,
                 from /usr/include/c++/7/bits/nested_exception.h:40,
                 from /usr/include/c++/7/exception:143,
                 from /usr/include/c++/7/ios:39,
                 from /usr/include/c++/7/istream:38,
                 from /usr/include/c++/7/sstream:38,
                 from /usr/include/c++/7/complex:45,
                 from /usr/include/c++/7/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:52,
                 from Bob.cpp:2:
/usr/include/c++/7/type_traits: In instantiation of 'struct std::__not_<std::__and_<std::__is_fast_hash<hashii>, std::__detail::__is_noexcept_hash<std::pair<int, int>, hashii> > >':
/usr/include/c++/7/bits/unordered_set.h:98:63:   required from 'class std::unordered_set<std::pair<int, int>, hashii>'
Bob.cpp:16:28:   required from here
/usr/include/c++/7/type_traits:154:31: error: 'value' is not a member of 'std::__and_<std::__is_fast_hash<hashii>, std::__detail::__is_noexcept_hash<std::pair<int, int>, hashii> >'
     : public __bool_constant<!bool(_Pp::value)>
                               ^~~~~~~~~~~~~~~~
In file included from /usr/include/c++/7/unordered_set:48:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:118,
                 from Bob.cpp:2:
/usr/include/c++/7/bits/unordered_set.h: In instantiation of 'class std::unordered_set<std::pair<int, int>, hashii>':
Bob.cpp:16:28:   required from here
/usr/include/c++/7/bits/unordered_set.h:98:63: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<hashii>, std::__detail::__is_noexcept_hash<std::pair<int, int>, hashii> > >'
       typedef __uset_hashtable<_Value, _Hash, _Pred, _Alloc>  _Hashtable;
                                                               ^~~~~~~~~~
/usr/include/c++/7/bits/unordered_set.h:105:45: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<hashii>, std::__detail::__is_noexcept_hash<std::pair<int, int>, hashii> > >'
       typedef typename _Hashtable::key_type key_type;
                                             ^~~~~~~~
/usr/include/c++/7/bits/unordered_set.h:106:47: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<hashii>, std::__detail::__is_noexcept_hash<std::pair<int, int>, hashii> > >'
       typedef typename _Hashtable::value_type value_type;
                                               ^~~~~~~~~~
/usr/include/c++/7/bits/unordered_set.h:107:43: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<hashii>, std::__detail::__is_noexcept_hash<std::pair<int, int>, hashii> > >'
       typedef typename _Hashtable::hasher hasher;
                                           ^~~~~~
/usr/include/c++/7/bits/unordered_set.h:108:46: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<hashii>, std::__detail::__is_noexcept_hash<std::pair<int, int>, hashii> > >'
       typedef typename _Hashtable::key_equal key_equal;
                                              ^~~~~~~~~
/usr/include/c++/7/bits/unordered_set.h:109:51: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<hashii>, std::__detail::__is_noexcept_hash<std::pair<int, int>, hashii> > >'
       typedef typename _Hashtable::allocator_type allocator_type;
                                                   ^~~~~~~~~~~~~~
/usr/include/c++/7/bits/unordered_set.h:114:45: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<hashii>, std::__detail::__is_noexcept_hash<std::pair<int, int>, hashii> > >'
       typedef typename _Hashtable::pointer  pointer;
                                             ^~~~~~~
/usr/include/c++/7/bits/unordered_set.h:115:50: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<hashii>, std::__detail::__is_noexcept_hash<std::pair<int, int>, hashii> > >'
       typedef typename _Hashtable::const_pointer const_pointer;
                                                  ^~~~~~~~~~~~~
/usr/include/c++/7/bits/unordered_set.h:116:47: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<hashii>, std::__detail::__is_noexcept_hash<std::pair<int, int>, hashii> > >'
       typedef typename _Hashtable::reference  reference;
                                               ^~~~~~~~~
/usr/include/c++/7/bits/unordered_set.h:117:52: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<hashii>, std::__detail::__is_noexcept_hash<std::pair<int, int>, hashii> > >'
       typedef typename _Hashtable::const_reference const_reference;
                                                    ^~~~~~~~~~~~~~~
/usr/include/c++/7/bits/unordered_set.h:118:46: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<hashii>, std::__detail::__is_noexcept_hash<std::pair<int, int>, hashii> > >'
       typedef typename _Hashtable::iterator  iterator;
                                              ^~~~~~~~
/usr/include/c++/7/bits/unordered_set.h:119:51: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<hashii>, std::__detail::__is_noexcept_hash<std::pair<int, int>, hashii> > >'
       typedef typename _Hashtable::const_iterator const_iterator;
                                                   ^~~~~~~~~~~~~~
/usr/include/c++/7/bits/unordered_set.h:120:51: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<hashii>, std::__detail::__is_noexcept_hash<std::pair<int, int>, hashii> > >'
       typedef typename _Hashtable::local_iterator local_iterator;
                                                   ^~~~~~~~~~~~~~
/usr/include/c++/7/bits/unordered_set.h:121:57: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<hashii>, std::__detail::__is_noexcept_hash<std::pair<int, int>, hashii> > >'
       typedef typename _Hashtable::const_local_iterator const_local_iterator;
                                                         ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/7/bits/unordered_set.h:122:47: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<hashii>, std::__detail::__is_noexcept_hash<std::pair<int, int>, hashii> > >'
       typedef typename _Hashtable::size_type  size_type;
                                               ^~~~~~~~~
/usr/include/c++/7/bits/unordered_set.h:123:52: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<hashii>, std::__detail::__is_noexcept_hash<std::pair<int, int>, hashii> > >'
       typedef typename _Hashtable::difference_type difference_type;
                                                    ^~~~~~~~~~~~~~~
/usr/include/c++/7/bits/unordered_set.h:282:7: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<hashii>, std::__detail::__is_noexcept_hash<std::pair<int, int>, hashii> > >'
       operator=(initializer_list<value_type> __l)
       ^~~~~~~~
/usr/include/c++/7/bits/unordered_set.h:375:2: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<hashii>, std::__detail::__is_noexcept_hash<std::pair<int, int>, hashii> > >'
  emplace(_Args&&... __args)
  ^~~~~~~
/usr/include/c++/7/bits/unordered_set.h:419:7: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<hashii>, std::__detail::__is_noexcept_hash<std::pair<int, int>, hashii> > >'
       insert(const value_type& __x)
       ^~~~~~
/usr/include/c++/7/bits/unordered_set.h:423:7: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<hashii>, std::__detail::__is_noexcept_hash<std::pair<int, int>, hashii> > >'
       insert(value_type&& __x)
       ^~~~~~
/usr/include/c++/7/bits/unordered_set.h:478:7: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<hashii>, std::__detail::__is_noexcept_hash<std::pair<int, int>, hashii> > >'
       insert(initializer_list<value_type> __l)
       ^~~~~~
/usr/include/c++/7/bits/unordered_set.h:679:7: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<hashii>, std::__detail::__is_noexcept_hash<std::pair<int, int>, hashii> > >'
       equal_range(const key_type& __x)
       ^~~~~~~~~~~
/usr/include/c++/7/bits/unordered_set.h:683:7: error: 'value' is not a member of 'std::__not_<std::__and_<std::__is_fast_hash<hashii>, std::__detail::__is_noexcept_hash<std::pair<int, int>, hashii> > >'
       equal_range(const key_type& __x) const
       ^~~~~~~~~~~
Bob.cpp: In function 'void Bob(int, int, int*, int*)':
Bob.cpp:25:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if(nums.size() == on) break;
      ~~~~~~~~~~~~^~~~~
Bob.cpp:33:29: error: no matching function for call to 'std::unordered_set<std::pair<int, int>, hashii>::insert(ii)'
   edges.insert(ii(C[i],D[i]));
                             ^
In file included from /usr/include/c++/7/unordered_set:48:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:118,
                 from Bob.cpp:2:
/usr/include/c++/7/bits/unordered_set.h:467:2: note: candidate: template<class _InputIterator> void std::unordered_set<_Value, _Hash, _Pred, _Alloc>::insert(_InputIterator, _InputIterator) [with _InputIterator = _InputIterator; _Value = std::pair<int, int>; _Hash = hashii; _Pred = std::equal_to<std::pair<int, int> >; _Alloc = std::allocator<std::pair<int, int> >]
  insert(_InputIterator __first, _InputIterator __last)
  ^~~~~~
/usr/include/c++/7/bits/unordered_set.h:467:2: note:   template argument deduction/substitution failed:
Bob.cpp:33:29: note:   candidate expects 2 arguments, 1 provided
   edges.insert(ii(C[i],D[i]));
                             ^
Bob.cpp:34:29: error: no matching function for call to 'std::unordered_set<std::pair<int, int>, hashii>::insert(ii)'
   edges.insert(ii(D[i],C[i]));
                             ^
In file included from /usr/include/c++/7/unordered_set:48:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:118,
                 from Bob.cpp:2:
/usr/include/c++/7/bits/unordered_set.h:467:2: note: candidate: template<class _InputIterator> void std::unordered_set<_Value, _Hash, _Pred, _Alloc>::insert(_InputIterator, _InputIterator) [with _InputIterator = _InputIterator; _Value = std::pair<int, int>; _Hash = hashii; _Pred = std::equal_to<std::pair<int, int> >; _Alloc = std::allocator<std::pair<int, int> >]
  insert(_InputIterator __first, _InputIterator __last)
  ^~~~~~
/usr/include/c++/7/bits/unordered_set.h:467:2: note:   template argument deduction/substitution failed:
Bob.cpp:34:29: note:   candidate expects 2 arguments, 1 provided
   edges.insert(ii(D[i],C[i]));
                             ^
Bob.cpp:52:12: error: 'class std::unordered_set<std::pair<int, int>, hashii>' has no member named 'find'
   if(edges.find(ii(i,y)) != edges.end()){
            ^~~~
Bob.cpp:52:35: error: 'class std::unordered_set<std::pair<int, int>, hashii>' has no member named 'end'
   if(edges.find(ii(i,y)) != edges.end()){
                                   ^~~
Bob.cpp:68:13: error: 'class std::unordered_set<std::pair<int, int>, hashii>' has no member named 'find'
    if(edges.find(ii(aa[i],aa[j])) != edges.end()){
             ^~~~
Bob.cpp:68:44: error: 'class std::unordered_set<std::pair<int, int>, hashii>' has no member named 'end'
    if(edges.find(ii(aa[i],aa[j])) != edges.end()){
                                            ^~~