QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#85873#4513. Slide ParadeAFewSuns0 1975ms51768kbC++142.6kb2023-03-08 20:02:002023-03-08 20:02:03

Judging History

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

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-03-08 20:02:03]
  • 评测
  • 测评结果:0
  • 用时:1975ms
  • 内存:51768kb
  • [2023-03-08 20:02:00]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
namespace my_std{
	#define ll long long
	#define bl bool
	ll my_pow(ll a,ll b,ll mod){
		ll res=1;
		if(!b) return 1;
		while(b){
			if(b&1) res=(res*a)%mod;
			a=(a*a)%mod;
			b>>=1;
		}
		return res;
	}
	ll qpow(ll a,ll b){
		ll res=1;
		if(!b) return 1;
		while(b){
			if(b&1) res*=a;
			a*=a;
			b>>=1;
		}
		return res;
	}
	#define db double
	#define pf printf
	#define pc putchar
	#define fr(i,x,y) for(register ll i=(x);i<=(y);i++)
	#define pfr(i,x,y) for(register ll i=(x);i>=(y);i--)
	#define go(u) for(ll i=head[u];i;i=e[i].nxt)
	#define enter pc('\n')
	#define space pc(' ')
	#define fir first
	#define sec second
	#define MP make_pair
	#define il inline
	#define inf 8e18
	#define random(x) rand()*rand()%(x)
	#define inv(a,mod) my_pow((a),(mod-2),(mod))
	il ll read(){
		ll sum=0,f=1;
		char ch=0;
		while(!isdigit(ch)){
			if(ch=='-') f=-1;
			ch=getchar();
		}
		while(isdigit(ch)){
			sum=sum*10+(ch^48);
			ch=getchar();
		}
		return sum*f;
	}
	il void write(ll x){
		if(x<0){
			x=-x;
			pc('-');
		}
		if(x>9) write(x/10);
		pc(x%10+'0');
	}
	il void writeln(ll x){
		write(x);
		enter;
	}
	il void writesp(ll x){
		write(x);
		space;
	}
}
using namespace my_std;
vector<ll> vec[220],ans;
ll t,n,m,to[220],head[220],cnt=0;
bl ck[220];
struct node{
	ll nxt,to;
}e[1000010];
void add(ll u,ll v){
	e[++cnt].nxt=head[u];
	e[cnt].to=v;
	head[u]=cnt;
}
bl match(ll u){
	fr(i,0,(ll)vec[u].size()-1){
		ll v=vec[u][i];
		if(!ck[v]){
			ck[v]=1;
			if(!to[v]||match(to[v])){
				to[v]=u;
				return 1;
			}
		}
	}
	return 0;
}
void dfs(ll u){
	ck[u]=1;
	for(ll i=head[u];i;i=head[u]){
		head[u]=e[i].nxt;
		dfs(e[i].to);
	}
	ans.push_back(u);
}
void clr(){
	fr(i,1,n) vec[i].clear();
	ans.clear();
	fr(i,1,n) head[i]=to[i]=0;
	cnt=0;
	fr(i,1,n) ck[i]=0;
}
int main(){
	t=read();
	fr(_,1,t){
		n=read();
		m=read();
		fr(i,1,m){
			ll u=read(),v=read();
			vec[u].push_back(v);
		}
		bl pd=0;
		fr(i,1,n){
			fr(j,1,n) ck[j]=0;
			if(!match(i)) pd=1;
		}
		fr(u,1,n){
			fr(i,0,(ll)vec[u].size()-1){
				ll v=vec[u][i];
				if(to[v]!=u){
					fr(j,1,n) if(to[j]==u) to[j]=0;
					ll w=to[v];
					to[v]=u;
					fr(j,1,n) ck[j]=0;
					ck[v]=1;
					if(!match(w)) pd=1;
				}
				fr(j,1,n) add(to[j],j);
			}
		}
		pf("Case #%lld: ",_);
		if(pd){
			pf("IMPOSSIBLE\n");
			clr();
			continue;
		}
		fr(i,1,n) ck[i]=0;
		dfs(1);
		writeln(ans.size());
		pfr(i,(ll)ans.size()-1,0) writesp(ans[i]);
		enter;
		clr();
	}
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Wrong Answer
time: 2ms
memory: 3640kb

input:

100
5 8
1 2
1 3
1 4
1 5
2 1
3 1
4 1
5 1
5 10
1 3
1 4
2 3
2 5
3 1
3 4
3 5
4 2
5 1
5 3
5 10
1 4
2 3
2 5
3 1
3 5
4 2
4 3
4 5
5 1
5 2
3 6
1 2
1 3
2 1
2 3
3 1
3 2
5 10
1 2
1 5
2 3
2 4
3 1
4 3
4 5
5 2
5 3
5 4
4 10
1 2
1 3
1 4
2 1
2 3
2 4
3 1
3 4
4 2
4 3
5 10
1 2
1 3
2 1
2 4
3 1
3 5
4 2
4 5
5 3
5 4
5 10
1 ...

output:

Case #1: IMPOSSIBLE
Case #2: 51
1 4 2 5 3 1 4 2 3 5 1 4 2 3 5 1 4 2 3 5 1 3 4 2 5 1 4 2 5 3 1 4 2 5 3 1 4 2 3 5 1 4 2 5 3 1 3 4 2 5 1 
Case #3: 51
1 4 3 1 4 2 5 2 3 5 1 4 5 2 3 1 4 3 1 4 2 5 2 3 5 1 4 2 3 5 1 4 3 1 4 3 1 4 2 5 2 5 2 3 5 1 4 2 3 5 1 
Case #4: 19
1 3 2 1 2 3 1 2 3 1 3 2 1 3 2 1 2 3 1 ...

result:

wrong answer the slide from 3 to 4 hasn't be used (test case 25)

Test #2:

score: 0
Wrong Answer
time: 1975ms
memory: 51768kb

input:

100
199 4980
1 95
1 96
1 105
1 124
1 130
1 131
1 135
1 137
1 139
1 140
1 141
1 147
1 155
1 172
1 174
1 179
1 183
1 188
1 193
1 196
1 197
2 3
2 5
2 13
2 14
2 17
2 20
2 24
2 26
2 30
2 41
2 44
2 45
2 52
2 56
2 67
2 70
2 71
2 74
2 78
2 84
2 85
2 90
2 92
2 93
2 97
2 107
2 111
2 113
2 122
2 124
2 128
2 13...

output:

Case #1: IMPOSSIBLE
Case #2: IMPOSSIBLE
Case #3: 1000001
1 67 142 75 191 179 161 23 100 22 40 99 82 68 129 90 113 27 160 88 172 52 57 110 86 194 62 49 143 192 181 156 174 35 123 58 152 133 137 108 6 186 105 36 157 38 8 2 148 4 39 43 195 29 154 73 41 115 72 176 190 30 45 101 171 112 121 117 141 187 8...

result:

wrong answer the slide from 3 to 4 hasn't be used (test case 27)