QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#725442 | #6613. Bitwise Exclusive-OR Sequence | ONISINO | WA | 269ms | 17108kb | C++20 | 2.5kb | 2024-11-08 17:48:42 | 2024-11-08 17:48:43 |
Judging History
answer
#include <bits/stdc++.h>
//DEBUG: https://github.com/sharkdp/dbg-macro
#ifdef LOCAL
#include "../Lib/dbg-macro-0.5.1/dbg.h"
#else
#define dbg(...) (__VA_ARGS__)
#endif
#define endl '\n'
using namespace std;
typedef long long ll;
typedef long double llf;
const ll MAXN=2e5+10,MOD=998244353,INF=1e9;
ll qpow(ll base,ll exp){ll ans=1;while(exp){if(exp&1)(ans*=base)%=MOD;(base*=base)%=MOD;exp>>=1;}return ans;}
template<class T>ll max_binary_answer(ll l,ll r,T check,bool cmp=true){ll m;while(l<r){m=(l+r+1)/2;if(cmp^!check(m))l=m;else r=m-1;}return l;}
template<class T>ll min_binary_answer(ll l,ll r,T check,bool cmp=true){ll m;while(l<r){m=(l+r)/2;if(cmp^!check(m))r=m;else l=m+1;}return r;}
ll exgcd(ll a,ll b,ll &x,ll &y){ll tmp;return b==0?(x=1,y=0,a):(tmp=exgcd(b,a%b,y,x),y-=(a/b)*x,tmp);}
ll highbit(ll x){for(ll i=1;i<(ll)sizeof(ll)*4;i<<=1)x|=x>>i;return x-(x>>1);}
ll lowbit(ll x){return x&(-x);}
//--------Global declared area--------
//--------Global declared end --------
void solve(int test_num){
int n,m;
ll sum=0;
cin>>n>>m;
vector<vector<pair<ll,ll>>> g(n+1);
vector<int> vis(n+1),ans(n+1);
for(int i=0;i<m;i++){
ll u,v,w;
cin>>u>>v>>w;
g[u].push_back({v,w});
g[v].push_back({u,w});
}
for(int bit=1;bit<(1<<30);bit<<=1){
queue<int> q;
fill(vis.begin(),vis.end(),0);
for(int i=1;i<=n;i++){
if(!vis[i]){
q.push(i);
vis[i]=1;
}
while(!q.empty()){
int p=q.front();
q.pop();
for(auto [to,w]:g[p]){
if(!vis[to]){
vis[to]=1;
q.push(to);
if(w&bit){
ans[to]|=(bit^(ans[p]&bit));
}else{
ans[to]|=(ans[p]&bit);
}
}else{
if(w&bit){
if((ans[to]&bit)==(ans[p]&bit)){
cout<<-1<<endl;
return;
}
}else{
if((ans[to]&bit)!=(ans[p]&bit)){
cout<<-1<<endl;
return;
}
}
}
}
}
if(g[i].empty()){
vis[i]=0;
}
}
ll cnt=0,tmp=0;
for(int i=1;i<=n;i++){
if(vis[i]){
cnt++;
if(ans[i]&bit){
tmp++;
}
}
}
sum+=min(tmp*bit,(cnt-tmp)*bit);
}
dbg(ans);
cout<<sum<<endl;
}
int main(){
#ifdef ACM
freopen("D:/Code/C or C++/File/input.txt","r",stdin);
freopen("D:/Code/C or C++/File/output.txt","w",stdout);
freopen("D:/Code/C or C++/File/error.txt","w",stderr);
#else
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr),std::cout.tie(nullptr);
#endif
int t=1;
// cin>>t;
for(int i=1;i<=t;i++){
solve(i);
//cout.flush();
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3852kb
input:
3 2 1 2 1 2 3 1
output:
1
result:
ok 1 number(s): "1"
Test #2:
score: 0
Accepted
time: 0ms
memory: 3844kb
input:
3 3 1 2 1 2 3 1 1 3 1
output:
-1
result:
ok 1 number(s): "-1"
Test #3:
score: 0
Accepted
time: 0ms
memory: 3560kb
input:
5 5 3 4 12 3 1 20 2 5 16 1 4 24 4 5 19
output:
58
result:
ok 1 number(s): "58"
Test #4:
score: 0
Accepted
time: 27ms
memory: 7272kb
input:
500 124750 1 2 31473 1 3 11597 1 4 6686 1 5 1214 1 6 14442 1 7 1042 1 8 19057 1 9 22648 1 10 24461 1 11 25714 1 12 3976 1 13 31954 1 14 7384 1 15 13988 1 16 28651 1 17 31599 1 18 8786 1 19 27068 1 20 9645 1 21 28281 1 22 11681 1 23 28897 1 24 31916 1 25 10462 1 26 23973 1 27 4615 1 28 5124 1 29 2026...
output:
8041745
result:
ok 1 number(s): "8041745"
Test #5:
score: 0
Accepted
time: 19ms
memory: 7260kb
input:
500 124750 1 2 3902 1 3 9006 1 4 2914 1 5 8753 1 6 2395 1 7 21406 1 8 14552 1 9 25834 1 10 28282 1 11 9684 1 12 11347 1 13 20545 1 14 16324 1 15 16951 1 16 11594 1 17 5035 1 18 17726 1 19 831 1 20 23194 1 21 7693 1 22 6147 1 23 315 1 24 32755 1 25 17078 1 26 11348 1 27 9587 1 28 21015 1 29 881 1 30 ...
output:
7803950
result:
ok 1 number(s): "7803950"
Test #6:
score: -100
Wrong Answer
time: 269ms
memory: 17108kb
input:
100000 200000 82262 26109 1005476194 43106 86715 475153289 59086 60577 507254441 71498 80384 186530379 99676 3003 289537598 30772 72897 345346447 12686 87447 896623879 12520 27709 26442442 82734 20830 967590473 13380 76164 927495776 25723 55377 89078582 7173 86993 669894679 37790 94846 331905713 365...
output:
52604636486198
result:
wrong answer 1st numbers differ - expected: '52538527353096', found: '52604636486198'