QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#476437#898. 二分图最大匹配WrongAnswer_90#WA 270ms28064kbC++175.2kb2024-07-13 19:34:452024-07-13 19:34:45

Judging History

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

  • [2024-07-13 19:34:45]
  • 评测
  • 测评结果:WA
  • 用时:270ms
  • 内存:28064kb
  • [2024-07-13 19:34:45]
  • 提交

answer

#include<bits/stdc++.h>
#define ull unsigned long long
#define ui unsigned int
#define ld long double
#define ll long long
#define lll __int128
#define fi first
#define se second
#define e emplace
#define eb emplace_back
#define db double
#define ef emplace_front
#define pii pair<int,int>
#define pll pair<ll,ll>
#define vi vector<int>
#define vp vector<pii>
#define mp make_pair

//#define LOCALJUDGE
#define int ll
bool ST;
static const ll MOD=998244353,Phi=998244352,inv2=499122177,Root=3,iRoot=332748118;
static const ll inf=1073741823,INF=4557430888798830399;
static const double eps=1e-8,pi=3.1415926535;
char in[1<<20],*p1=in,*p2=in;
using namespace std;
// #define getchar() (p1==p2&&(p2=(p1=in)+fread(in,1,1<<20,stdin),p1==p2)?EOF:*p1++)
struct tup{int x,y,z;tup(int X=0,int Y=0,int Z=0){x=X,y=Y,z=Z;}};
namespace FastIO
{
	template<typename T> inline void write(T x,char ch=' ')
	{
		if(is_same<char,T>::value)putchar(x);
		else
		{
			if(x<0)x=-x,putchar('-');

			static char st[50];int top=0;
			do{st[top++]=x%10+'0',x/=10;}while(x);
			while(top)putchar(st[--top]);
		}
		ch!='~'?putchar(ch):0;
	}
	inline void write(const char*x,char ch=' ')
	{
		for(int i=0;x[i]!='\0';++i)putchar(x[i]);
		ch!='~'?putchar(ch):0;
	}
	inline void read(char&s){do s=getchar();while(s=='\n'||s==' ');}
	inline void read(char s[])
	{
		int len=0;char st;
		do st=getchar();while(st=='\n'||st==' ');
		s[++len]=st,st=getchar();
		while(st!='\n'&&st!=' ')s[++len]=st,st=getchar();
		s[++len]='\0';
	}
	template<typename T> inline void read(T &s)
	{
		s=0;char ch=getchar();
		while((ch>'9'||ch<'0')&&ch!='-')ch=getchar();
		bool tf=(ch=='-')&&(ch=getchar());
		while((ch>='0')&&(ch<='9'))s=(s<<1)+(s<<3)+ch-'0',ch=getchar();
		s=(tf?-s:s);
	}
	template<typename T1,typename T2> inline void read(pair<T1,T2> &s){read(s.fi),read(s.se);}
	template<typename T,typename...Args> inline void write(T x,Args...args){write(x,'~'),write(args...);}
	template<typename T,typename...Args> inline void read(T&x,Args&...args){read(x),read(args...);}
}
using namespace FastIO;
namespace MTool
{
	inline int Cadd(int a,int b){return (ll)a+b>=MOD?(ll)a+b-MOD:a+b;}
	inline int Cdel(int a,int b){return a-b<0?a-b+MOD:a-b;}
	inline int Cmul(int a,int b){return 1ll*a*b%MOD;}
	inline int sqr(int a){return 1ll*a*a%MOD;}
	inline void Madd(int&a,int b){a=((ll)a+b>=MOD?(ll)a+b-MOD:a+b);}
	inline void Mdel(int&a,int b){a=(a-b<0?a-b+MOD:a-b);}
	inline void Mmul(int&a,int b){a=1ll*a*b%MOD;}
	template<typename T> inline bool Mmax(T&a,T b){return a<b?a=b,1:0;}
	template<typename T> inline bool Mmin(T&a,T b){return a>b?a=b,1:0;}
	template<typename...Args> inline void Madd(int&a,int b,Args...args){Madd(a,b),Madd(a,args...);}
	template<typename...Args> inline void Mmul(int&a,int b,Args...args){Mmul(a,b),Mmul(a,args...);}
	template<typename...Args> inline void Mdel(int&a,int b,Args...args){Mdel(a,b),Mdel(a,args...);}
	template<typename...Args> inline int Cadd(int a,int b,Args...args){return Cadd(Cadd(a,b),args...);}
	template<typename...Args> inline int Cmul(int a,int b,Args...args){return Cmul(Cmul(a,b),args...);}
	template<typename...Args> inline int Cdel(int a,int b,Args...args){return Cdel(Cdel(a,b),args...);}
	template<typename...Args,typename T> inline bool Mmax(T&a,T b,Args...args){return Mmax(a,b)|Mmax(a,args...);}
	template<typename...Args,typename T> inline bool Mmin(T&a,T b,Args...args){return Mmin(a,b)|Mmin(a,args...);}
	inline int power(int x,int y){int s=1;for(;y;y>>=1,Mmul(x,x))if(y&1)Mmul(s,x);return s;}
}
using namespace MTool;
namespace WrongAnswer_90
{
	int cnt,L,R,m,S,T,head[200010],to[800010],v[800010],nex[800010],now[200010],d[200010];
	inline void Add(int x,int y,int z){to[++cnt]=y,nex[cnt]=head[x],head[x]=cnt,v[cnt]=z;}
	inline void add(int x,int y,int z){Add(x,y,z),Add(y,x,0);}
	inline bool bfs()
	{
		queue<int> q;q.e(S),memset(d,0,sizeof(d)),d[S]=1,now[S]=head[S];
		while(!q.empty())
		{
			int nw=q.front();q.pop();
			for(int i=head[nw];i;i=nex[i])
			{
				if(v[i]&&!d[to[i]])
				{
					d[to[i]]=d[nw]+1,now[to[i]]=head[to[i]],q.e(to[i]);
					if(to[i]==T)return 1;
				}
			}
		}
		return 0;
	}
	int dinic(int x,int flow)
	{
		if(x==T)return flow;
		int rest=flow,t;
		for(int i=now[x];i&&rest;i=nex[i])
		{
			now[x]=i;
			if(!v[i]||d[to[i]]!=d[x]+1)continue;
			t=dinic(to[i],min(rest,v[i]));
			v[i]-=t,v[i^1]+=t,rest-=t;
			if(!t)d[to[i]]=0;
		}
		return flow-rest;
	}
	inline void mian()
	{
		read(L,R,m),S=L+R+1,T=S+1;int x,y,s=0;
		while(m--)read(x,y),add(x+1,y+1+L,1);
		for(int i=1;i<=L;++i)add(S,i,1);
		for(int i=L+1;i<=L+R;++i)add(i,T,1);
		while(bfs())while((x=dinic(S,INF)))s+=x;
		write(s,'\n');
		for(int i=head[S];i;i=nex[i])
		{
			if(!v[i])
			{
				int s=0;
				for(int j=head[to[i]];j;j=nex[j])
				if(!v[j]){++s,assert(to[i]!=S);write(to[i]-1,' ',to[j]-L-1,'\n');}
			}
		}
	}
}
bool ED;
signed main()
{
	#ifdef LOCALJUDGE
	freopen("ex_mod5.in","r",stdin);
	freopen("1.out","w",stdout);
	#endif
	double st=clock();
	WrongAnswer_90::mian();
	double ed=clock();
	#ifndef LOCALJUDGE
 	cerr<<endl;
	#endif
 	cerr<<"Time: "<<ed-st<<" ms\n";
	#ifdef LOCALJUDGE
 	cerr<<"     ";
	#endif
 	cerr<<"Memory: "<<abs(&ST-&ED)/1024.0/1024.0<<" MB\n";
	return 0;
}

详细

Test #1:

score: 0
Wrong Answer
time: 270ms
memory: 28064kb

input:

100000 100000 200000
78474 45795
32144 46392
92549 13903
73460 34144
96460 92850
56318 77066
77529 84436
76342 51542
77506 99268
76410 89381
1778 61392
43607 96135
84268 74827
14857 35966
32084 94908
19876 174
1481 94390
12423 55019
64368 92587
81295 7902
25432 46032
36293 61128
73555 84836
8418 102...

output:

92800
99999 47869
99998 86010
99997 82251
99996 72207
99994 45120
99993 49218
99992 37339
99990 10845
99990 82705
99989 88952
99988 3890
99986 8366
99985 42640
99984 1987
99983 59761
99982 99533
99981 90963
99981 24351
99980 36425
99979 19551
99978 37254
99977 84368
99976 88432
99975 33984
99974 363...

result:

wrong answer # of Matching is differ - expected: '100000', found '92800'