QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#327875#1844. CactusfangzichangWA 484ms153704kbC++172.8kb2024-02-15 15:11:502024-02-15 15:11:51

Judging History

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

  • [2024-02-15 15:11:51]
  • 评测
  • 测评结果:WA
  • 用时:484ms
  • 内存:153704kb
  • [2024-02-15 15:11:50]
  • 提交

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)){
		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);
	}
}
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: 9ms
memory: 78180kb

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: 7ms
memory: 76048kb

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: 484ms
memory: 153704kb

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:

97003 190282 

89549 457385 
549193 580696 
195533 281274 

135033 471679 
171679 245041 

470101 487627 
255387 565819 
300785 384420 
84420 300785 
785 143987 


166787 200129 294962 473470 
466787 500129 
166787 500129 
182100 200129 

28500 448012 
148012 296968 

301251 523819 
1640 142133 

72...

result:

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