Submission #1280357

#TimeUsernameProblemLanguageResultExecution timeMemory
1280357jackofall718Experimental Charges (NOI19_charges)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> #include <chrono> #define ll long long int #define endl '\n' #define vn vector<ll> #define vi vector<pair <ll,ll>> using namespace std; using namespace std::chrono; const int MAX_N = 1e9 + 7; #define pii pair<ll,ll> const ll INF = 0x3f3f3f3f3f3f3f3f; #define pb push_back #define srt(vp) sort(vp.begin(), vp.end()) vn link; vector <vn> adj; vn status; vn sizes; ll find (ll n){ while ( n != link[n])n=link[n]; return n; }; ll same(ll x, ll y){ return find(x)==find(y); }; void unite(ll x, ll y){ x = find(x); y = find(y); if (sizes[x]<sizes[y])swap(x,y); sizes[x]+=sizes[y]; link[y]=x; adj[x].insert(adj[x].end(),adj[y].begin(),adj[y].end());//gpt for this impl } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); auto start = high_resolution_clock::now(); ll n,q; cin>>n>>q; link.resize(n+1); adj.resize(n+1); status.resize(n+1,1); sizes.resize(n+1); for (int i=1;i<=n;i++)sizes[i]=1; for (int i=1;i<=n;i++)link[i]=i; for (int i=1;i<=n;i++)adj[i].pb(i); for (int i=0;i<q;i++){ char a; ll b,c; cin>>a>>b>>c; if (a=='A'){ if (find(b)==find(c))continue; if ((status[b]^1) == status[c]) { unite(b,c); } else{ b = find(b); c= find(c); if (sizes[b]<sizes[c])swap(b,c); for (auto &x:adj[c])status[x]^=1; unite(b,c); } } else if (a=='R'){ if (find(b)==find(c))continue; if (status[b]==status[c]){ unite(b,c); } else{ b = find(b); c= find(c); if (sizes[b]<sizes[c])swap(b,c); for (auto &x:adj[c])status[x]^=1; unite(b,c); } } else{ if (find(b) != find(c))cout<<"?"<<endl; else if (status[b]==status[c])cout<<"R"<<endl; else cout<<"A"<<endl; } } auto stop = high_resolution_clock::now(); auto duration = duration_cast<microseconds>(stop - start); //cout << "Time taken by function: " << duration.count() << " microseconds" << endl; return 0; }

Compilation message (stderr)

charges.cpp:17:4: error: 'std::vector<long long int> link' redeclared as different kind of entity
   17 | vn link;
      |    ^~~~
In file included from /usr/include/c++/13/bits/atomic_wait.h:45,
                 from /usr/include/c++/13/bits/atomic_base.h:42,
                 from /usr/include/c++/13/bits/shared_ptr_atomic.h:33,
                 from /usr/include/c++/13/memory:81,
                 from /usr/include/x86_64-linux-gnu/c++/13/bits/stdc++.h:56,
                 from charges.cpp:1:
/usr/include/unistd.h:819:12: note: previous declaration 'int link(const char*, const char*)'
  819 | extern int link (const char *__from, const char *__to)
      |            ^~~~
charges.cpp: In function 'long long int find(long long int)':
charges.cpp:23:24: warning: pointer to a function used in arithmetic [-Wpointer-arith]
   23 |     while ( n != link[n])n=link[n];
      |                        ^
charges.cpp:23:15: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
   23 |     while ( n != link[n])n=link[n];
      |             ~~^~~~~~~~~~
charges.cpp:23:34: warning: pointer to a function used in arithmetic [-Wpointer-arith]
   23 |     while ( n != link[n])n=link[n];
      |                                  ^
charges.cpp:23:34: error: invalid conversion from 'int (*)(const char*, const char*) noexcept' to 'long long int' [-fpermissive]
   23 |     while ( n != link[n])n=link[n];
      |                            ~~~~~~^
      |                                  |
      |                                  int (*)(const char*, const char*) noexcept
charges.cpp: In function 'void unite(long long int, long long int)':
charges.cpp:36:11: warning: pointer to a function used in arithmetic [-Wpointer-arith]
   36 |     link[y]=x;
      |           ^
charges.cpp:36:12: error: assignment of read-only location '*(link + ((sizetype)y))'
   36 |     link[y]=x;
      |     ~~~~~~~^~
charges.cpp: In function 'int main()':
charges.cpp:48:10: error: request for member 'resize' in 'link', which is of non-class type 'int(const char*, const char*) noexcept'
   48 |     link.resize(n+1);
      |          ^~~~~~
charges.cpp:53:33: warning: pointer to a function used in arithmetic [-Wpointer-arith]
   53 |     for (int i=1;i<=n;i++)link[i]=i;
      |                                 ^
charges.cpp:53:34: error: assignment of read-only location '*(link + ((sizetype)i))'
   53 |     for (int i=1;i<=n;i++)link[i]=i;
      |                           ~~~~~~~^~