QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#327881#1844. CactusfangzichangWA 476ms150200kbC++172.9kb2024-02-15 15:16:192024-02-15 15:16:19

Judging History

你现在查看的是最新测评结果

  • [2024-02-15 15:16:19]
  • 评测
  • 测评结果:WA
  • 用时:476ms
  • 内存:150200kb
  • [2024-02-15 15:16:19]
  • 提交

answer

#include<bits/extc++.h>
#include<bits/stdc++.h>
//#pragma GCC optimize(2)
//本代码含有小众情感元素,建议满 18 周岁后观看
#ifdef __unix__
#define getchar getchar_unlocked
#define putchar putchar_unlocked
#else
#define getchar _getchar_nolock
#define putchar _putchar_nolock
#endif
#define debug fprintf(stderr,"Tomoyo after ~It's a wonderful life!~\n")
#define all(x) x.begin(),x.end()
#define pii pair<int,int>
#define Inf (int)INFINITY
#define inf 0x3f3f3f3f
#define pb push_back
#define ll long long
#define endl '\n'
#define y second
#define x first
using namespace std;
const int N=6e5+10;
void read(){};
template<class T1,class ...T2>
inline void read(T1& ret,T2&... rest){
	ret=0;char c=getchar();bool f=false;
	while(c<'0'||c>'9')f=c=='-',c=getchar();
	while(c>='0'&&c<='9')ret=ret*10+c-'0',c=getchar();
	f&&(ret=-ret),read(rest...);
}
#define cin(...) read(__VA_ARGS__)
template<class T>
inline void print(T x){
	static int s[35],t=0;
	bool f=x<0;if(f)x=-x;
	do s[t++]=x%10,x/=10;while(x);
	f&&putchar('-');while(t)putchar(s[--t]+'0');
}
set<int>nxt[N],g[N];
vector<pii>ans;
vector<int>stk,rt,t[N];
int n,m,flg,tot,cnt,dfn[N],low[N],r[N];
void op(int u){
	if(!(g[u].size()&1)){
		cout<<u<<endl;
		for(int v:g[u])cout<<v<<" ";
		cout<<endl;
	}
	for(int v:g[u])g[v].erase(u);
	g[u].clear();
	ans.pb({1,u});
}
void work(int u){
	if(!(nxt[u].size()&1))return;
	vector<int>tmp;
	for(int v:nxt[u])tmp.pb(v),nxt[v].erase(u);
	op(u),nxt[u].clear();
	for(int v:tmp)work(v);
}
void Tarjan(int u,int fa){
	low[u]=dfn[u]=++tot,stk.pb(u);
	for(int v:nxt[u])if(v^fa){
		if(!dfn[v]){
			Tarjan(v,u),low[u]=min(low[u],low[v]);
			if(low[v]>=dfn[u]){
				t[++cnt].pb(u),t[u].pb(cnt);
				while(stk.back()!=u)
					t[cnt].pb(stk.back()),t[stk.back()].pb(cnt),stk.pop_back();
			}
		}
		else low[u]=min(low[u],dfn[v]);
	}
}
void dfs(int u,int fa){
	for(int v:t[u])if(v^fa)dfs(v,u);
	if(u>n){
		//assert(t[u][0]==fa);
		for(int i=1;i<(int)(t[u].size());i++)op(t[u][i]+(i&1)*n);
		op(t[u][1]),op(t[u].back()+(t[u].size()&1)*n);
		if(!(g[fa].size()&1)){
			cerr<<"! "<<fa<<endl;
			for(int v:t[u])cerr<<v<<" ";
			cerr<<endl;
		}
	}
}
int main(){
	cin(n,m),cnt=n;
	for(int i=1,u,v;i<=m;i++)
		cin(u,v),nxt[u].insert(v),nxt[v].insert(u),g[u].insert(v),g[v].insert(u);
	for(int u=1;u<=n;u++)work(u);
	for(int u=1;u<=n;u++)if(nxt[u].size())flg=1;
	if(!flg){
		print(0),putchar(' '),print(ans.size()),putchar(endl);
		for(pii p:ans)print(p.x),putchar(' '),print(p.y),putchar(endl);
		return 0;
	}
	ans.pb({2,0});
	for(int i=1;i<=n;i++){
		for(int j:g[i])g[i+n].insert(j+n);
		g[i+n].insert(i),g[i].insert(i+n);
	}
	for(int u=1;u<=n;u++){
		if(!nxt[u].size())op(u);
		else if(!dfn[u])rt.pb(u),r[u]=1,Tarjan(u,0);
	}
	for(int u:rt)dfs(u,0),op(u);
	print(0),putchar(' '),print(ans.size()),putchar(endl);
	for(pii p:ans){
		print(p.x);if(p.y)putchar(' '),print(p.y);
		putchar(endl);
	}
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 3ms
memory: 74116kb

input:

3 3
1 2
1 3
2 3

output:

0 6
2
1 6
1 2
1 3
1 5
1 1

result:

ok You are right!

Test #2:

score: 0
Accepted
time: 4ms
memory: 73740kb

input:

7 7
1 2
1 3
2 3
2 4
2 5
3 6
3 7

output:

0 5
1 4
1 2
1 1
1 6
1 3

result:

ok You are right!

Test #3:

score: -100
Wrong Answer
time: 476ms
memory: 150200kb

input:

300000 368742
1 143504
1 234282
2 91276
2 296320
3 274816
4 212293
4 258214
5 253489
5 295826
6 96521
6 252745
6 267103
6 269879
7 5293
7 295586
8 44304
8 57067
8 233291
9 190526
10 18682
11 7440
12 24695
12 172561
12 243692
12 280316
13 80152
13 268749
14 146394
14 207280
15 151280
15 226848
16 458...

output:

153816
97003 190282 
97003

389549
89549 457385 
508645
549193 580696 
207888
195533 281274 
195533

435033
135033 471679 
135033
171679 245041 
135033

471679
470101 487627 
555387
255387 565819 
435621
300785 384420 
384420
84420 300785 
84420
785 143987 
84420

171658

173470
166787 200129 294962...

result:

wrong answer Integer parameter [name=m'] equals to 153816, violates the range [0, 0]