제출 #97052

#제출 시각아이디문제언어결과실행 시간메모리
97052hjc20032003Praktični (COCI18_prakticni)C++14
130 / 130
245 ms13304 KiB
#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;
}

컴파일 시 표준 에러 (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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...