Submission #212096

#TimeUsernameProblemLanguageResultExecution timeMemory
212096kshitij_sodani조이터에서 친구를 만드는건 재밌어 (JOI20_joitter2)C++17
Compilation error
0 ms0 KiB
#include <iostream> #include <bits/stdc++.h> using namespace std; typedef long long ll; #define mp make_pair #define pb push_back #define a first #define b second #define endl "\n" int par[100001]; int size[100001]; set<pair<int,int>> inc[100001]; set<pair<int,int>> out[100001]; int find(int no){ if(par[no]==no){ return no; } par[no]=find(par[no]); return par[no]; } set<int> wait; ll ans=0; ll count(int aa){ return (ll)size[aa]*(size[aa]-1)+(ll)inc[aa].size()*size[aa]; } void merge(int aa,int bb){ ans-=(count(aa)+count(bb)); if((inc[aa].size()+out[aa].size())<(inc[bb].size()+out[bb].size())){ swap(aa,bb); } for(auto no:inc[bb]){ if(no.a==aa){ auto it=out[aa].find({bb,no.b}); out[aa].erase(it); continue; } auto it=inc[no.a].lower_bound({aa,0}); if(it!=inc[no.a].end() and it->a==aa){ wait.insert(no.a); } out[no.a].insert({aa,no.b}); auto tt=out[no.a].find({bb,no.b}); out[no.a].erase(tt); inc[aa].insert(no); } for(auto no:out[bb]){ if(no.a==aa){ auto it=inc[aa].find({bb,no.b}); inc[aa].erase(it); continue; } auto it=out[no.a].lower_bound({aa,0}); if(it!=out[no.a].end() and it->a==aa){ wait.insert(no.a); } inc[no.a].insert({aa,no.b}); auto tt=inc[no.a].find({bb,no.b}); inc[no.a].erase(tt); out[aa].insert(no); } inc[bb].clear(); out[bb].clear(); par[bb]=aa; size[aa]+=size[bb]; ans+=count(aa); //cout<<":: "<<ans<<" "<<aa<<" "<<bb<<" "<<inc[aa].size()<<endl; if(wait.size()>0){ int xx=*(wait.begin()); wait.erase(wait.begin()); merge(aa,xx); } } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); int tot=0; int n,m; cin>>n>>m; for(int i=0;i<n;i++){ par[i]=i; size[i]=1; } int aa,bb; for(int i=0;i<m;i++){ cin>>aa>>bb; aa-=1; bb-=1; int ac=aa; aa=find(aa); bb=find(bb); if(aa==bb){ continue; } if(out[aa].find({bb,ac})==out[aa].end()){ auto it=inc[aa].lower_bound({bb,0}); if(it!=inc[aa].end() and it->a==bb){ merge(aa,bb); } else{ inc[bb].insert({aa,ac}); out[aa].insert({bb,ac}); ans+=size[bb]; } } cout<<ans<<endl; } return 0; }

Compilation message (stderr)

joitter2.cpp: In function 'll count(int)':
joitter2.cpp:24:13: error: reference to 'size' is ambiguous
  return (ll)size[aa]*(size[aa]-1)+(ll)inc[aa].size()*size[aa];
             ^~~~
joitter2.cpp:11:5: note: candidates are: int size [100001]
 int size[100001];
     ^~~~
In file included from /usr/include/c++/7/string:51:0,
                 from /usr/include/c++/7/bits/locale_classes.h:40,
                 from /usr/include/c++/7/bits/ios_base.h:41,
                 from /usr/include/c++/7/ios:42,
                 from /usr/include/c++/7/ostream:38,
                 from /usr/include/c++/7/iostream:39,
                 from joitter2.cpp:1:
/usr/include/c++/7/bits/range_access.h:252:5: note:                 template<class _Tp, long unsigned int _Nm> constexpr std::size_t std::size(const _Tp (&)[_Nm])
     size(const _Tp (&/*__array*/)[_Nm]) noexcept
     ^~~~
/usr/include/c++/7/bits/range_access.h:242:5: note:                 template<class _Container> constexpr decltype (__cont.size()) std::size(const _Container&)
     size(const _Container& __cont) noexcept(noexcept(__cont.size()))
     ^~~~
joitter2.cpp:24:23: error: reference to 'size' is ambiguous
  return (ll)size[aa]*(size[aa]-1)+(ll)inc[aa].size()*size[aa];
                       ^~~~
joitter2.cpp:11:5: note: candidates are: int size [100001]
 int size[100001];
     ^~~~
In file included from /usr/include/c++/7/string:51:0,
                 from /usr/include/c++/7/bits/locale_classes.h:40,
                 from /usr/include/c++/7/bits/ios_base.h:41,
                 from /usr/include/c++/7/ios:42,
                 from /usr/include/c++/7/ostream:38,
                 from /usr/include/c++/7/iostream:39,
                 from joitter2.cpp:1:
/usr/include/c++/7/bits/range_access.h:252:5: note:                 template<class _Tp, long unsigned int _Nm> constexpr std::size_t std::size(const _Tp (&)[_Nm])
     size(const _Tp (&/*__array*/)[_Nm]) noexcept
     ^~~~
/usr/include/c++/7/bits/range_access.h:242:5: note:                 template<class _Container> constexpr decltype (__cont.size()) std::size(const _Container&)
     size(const _Container& __cont) noexcept(noexcept(__cont.size()))
     ^~~~
joitter2.cpp:24:54: error: reference to 'size' is ambiguous
  return (ll)size[aa]*(size[aa]-1)+(ll)inc[aa].size()*size[aa];
                                                      ^~~~
joitter2.cpp:11:5: note: candidates are: int size [100001]
 int size[100001];
     ^~~~
In file included from /usr/include/c++/7/string:51:0,
                 from /usr/include/c++/7/bits/locale_classes.h:40,
                 from /usr/include/c++/7/bits/ios_base.h:41,
                 from /usr/include/c++/7/ios:42,
                 from /usr/include/c++/7/ostream:38,
                 from /usr/include/c++/7/iostream:39,
                 from joitter2.cpp:1:
/usr/include/c++/7/bits/range_access.h:252:5: note:                 template<class _Tp, long unsigned int _Nm> constexpr std::size_t std::size(const _Tp (&)[_Nm])
     size(const _Tp (&/*__array*/)[_Nm]) noexcept
     ^~~~
/usr/include/c++/7/bits/range_access.h:242:5: note:                 template<class _Container> constexpr decltype (__cont.size()) std::size(const _Container&)
     size(const _Container& __cont) noexcept(noexcept(__cont.size()))
     ^~~~
joitter2.cpp: In function 'void merge(int, int)':
joitter2.cpp:66:2: error: reference to 'size' is ambiguous
  size[aa]+=size[bb];
  ^~~~
joitter2.cpp:11:5: note: candidates are: int size [100001]
 int size[100001];
     ^~~~
In file included from /usr/include/c++/7/string:51:0,
                 from /usr/include/c++/7/bits/locale_classes.h:40,
                 from /usr/include/c++/7/bits/ios_base.h:41,
                 from /usr/include/c++/7/ios:42,
                 from /usr/include/c++/7/ostream:38,
                 from /usr/include/c++/7/iostream:39,
                 from joitter2.cpp:1:
/usr/include/c++/7/bits/range_access.h:252:5: note:                 template<class _Tp, long unsigned int _Nm> constexpr std::size_t std::size(const _Tp (&)[_Nm])
     size(const _Tp (&/*__array*/)[_Nm]) noexcept
     ^~~~
/usr/include/c++/7/bits/range_access.h:242:5: note:                 template<class _Container> constexpr decltype (__cont.size()) std::size(const _Container&)
     size(const _Container& __cont) noexcept(noexcept(__cont.size()))
     ^~~~
joitter2.cpp:66:12: error: reference to 'size' is ambiguous
  size[aa]+=size[bb];
            ^~~~
joitter2.cpp:11:5: note: candidates are: int size [100001]
 int size[100001];
     ^~~~
In file included from /usr/include/c++/7/string:51:0,
                 from /usr/include/c++/7/bits/locale_classes.h:40,
                 from /usr/include/c++/7/bits/ios_base.h:41,
                 from /usr/include/c++/7/ios:42,
                 from /usr/include/c++/7/ostream:38,
                 from /usr/include/c++/7/iostream:39,
                 from joitter2.cpp:1:
/usr/include/c++/7/bits/range_access.h:252:5: note:                 template<class _Tp, long unsigned int _Nm> constexpr std::size_t std::size(const _Tp (&)[_Nm])
     size(const _Tp (&/*__array*/)[_Nm]) noexcept
     ^~~~
/usr/include/c++/7/bits/range_access.h:242:5: note:                 template<class _Container> constexpr decltype (__cont.size()) std::size(const _Container&)
     size(const _Container& __cont) noexcept(noexcept(__cont.size()))
     ^~~~
joitter2.cpp: In function 'int main()':
joitter2.cpp:84:3: error: reference to 'size' is ambiguous
   size[i]=1;
   ^~~~
joitter2.cpp:11:5: note: candidates are: int size [100001]
 int size[100001];
     ^~~~
In file included from /usr/include/c++/7/string:51:0,
                 from /usr/include/c++/7/bits/locale_classes.h:40,
                 from /usr/include/c++/7/bits/ios_base.h:41,
                 from /usr/include/c++/7/ios:42,
                 from /usr/include/c++/7/ostream:38,
                 from /usr/include/c++/7/iostream:39,
                 from joitter2.cpp:1:
/usr/include/c++/7/bits/range_access.h:252:5: note:                 template<class _Tp, long unsigned int _Nm> constexpr std::size_t std::size(const _Tp (&)[_Nm])
     size(const _Tp (&/*__array*/)[_Nm]) noexcept
     ^~~~
/usr/include/c++/7/bits/range_access.h:242:5: note:                 template<class _Container> constexpr decltype (__cont.size()) std::size(const _Container&)
     size(const _Container& __cont) noexcept(noexcept(__cont.size()))
     ^~~~
joitter2.cpp:105:10: error: reference to 'size' is ambiguous
     ans+=size[bb];
          ^~~~
joitter2.cpp:11:5: note: candidates are: int size [100001]
 int size[100001];
     ^~~~
In file included from /usr/include/c++/7/string:51:0,
                 from /usr/include/c++/7/bits/locale_classes.h:40,
                 from /usr/include/c++/7/bits/ios_base.h:41,
                 from /usr/include/c++/7/ios:42,
                 from /usr/include/c++/7/ostream:38,
                 from /usr/include/c++/7/iostream:39,
                 from joitter2.cpp:1:
/usr/include/c++/7/bits/range_access.h:252:5: note:                 template<class _Tp, long unsigned int _Nm> constexpr std::size_t std::size(const _Tp (&)[_Nm])
     size(const _Tp (&/*__array*/)[_Nm]) noexcept
     ^~~~
/usr/include/c++/7/bits/range_access.h:242:5: note:                 template<class _Container> constexpr decltype (__cont.size()) std::size(const _Container&)
     size(const _Container& __cont) noexcept(noexcept(__cont.size()))
     ^~~~
joitter2.cpp:79:6: warning: unused variable 'tot' [-Wunused-variable]
  int tot=0;
      ^~~