This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
#define REP(i,s,t) for(int i=s;i<=t;i++)
#define mp make_pair
#define A first
#define B second
#define TO e[i].to
#define pb push_back
using namespace std;
typedef pair<int,int> pii;
const int maxn=2e5+5;
struct Edge {int nxt,to,val;}e[maxn];
int hd[maxn],e_cnt;
void add(int u,int v,int val) {
e[++e_cnt]=(Edge){hd[u],v,val};
hd[u]=e_cnt;
}
int px[maxn],dfn[maxn],bad_cnt;
pii bad[maxn];
void dfs(int u,int d,int x) {
dfn[u]=d; px[u]=x;
for(int i=hd[u];i;i=e[i].nxt) {
if(!dfn[TO]) dfs(TO,d+1,x^e[i].val);
else if(dfn[TO]<d-1) {
int tx=x^e[i].val^px[TO];
if(tx) bad[++bad_cnt]=mp(i,tx);
}
}
}
int cnt,ans[50];
vector<int> vec[50];
int main() {
int n,m; cin>>n>>m;
REP(i,1,m) {
int a,b,p; cin>>a>>b>>p;
add(a,b,p); add(b,a,p);
}
dfs(1,1,0);
REP(i,0,29) {
int id=0;
REP(j,1,bad_cnt) if(bad[j].B&1<<i) id=j;
if(!id) continue;
ans[++cnt]=bad[id].B;
REP(j,1,bad_cnt) if(bad[j].B&1<<i) bad[j].B^=ans[cnt],vec[cnt].pb(bad[j].A);
}
cout<<cnt<<'\n';
REP(i,1,cnt) {
cout<<ans[i]<<' '<<vec[i].size()<<' ';
sort(vec[i].begin(),vec[i].end());
for(int j=0;j<vec[i].size();j++) cout<<((vec[i][j]-1)>>1)+1<<' ';
cout<<'\n';
}
return 0;
}
Compilation message (stderr)
parkticni.cpp: In function 'int main()':
parkticni.cpp:49:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int j=0;j<vec[i].size();j++) cout<<((vec[i][j]-1)>>1)+1<<' ';
~^~~~~~~~~~~~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |