QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#821751#9875. Don't Detect CycleWrongAnswer_90WA 21ms5756kbC++236.1kb2024-12-19 17:51:202024-12-19 17:51:20

Judging History

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

  • [2024-12-19 17:51:20]
  • 评测
  • 测评结果:WA
  • 用时:21ms
  • 内存:5756kb
  • [2024-12-19 17:51:20]
  • 提交

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 vt vector<tup>
#define all(x) x.begin(),x.end()
#define mp make_pair

#define FastI
#define FastO
#define int ll
bool ST;
static const ll MOD=1e9+7,Phi=998244352,inv2=499122177,Root=3,iRoot=332748118;
static const ll inf=1073741823,Inf=4294967296,INF=1e18;
static const ld eps=1e-9,pi=3.1415926535;
char in[1<<20],*p1=in,*p2=in;
char out[1<<20],*p3=out;
using namespace std;
struct tup
{
	int x,y,z;
	tup(int X=0,int Y=0,int Z=0)
	{x=X,y=Y,z=Z;}
	bool operator <(const tup nd)const
	{return x<nd.x;}
};
#ifdef FastI
#define getchar() (p1==p2&&(p2=(p1=in)+fread(in,1,1<<20,stdin),p1==p2)?EOF:*p1++)
#endif
#ifdef FastO
#define putchar(x) (p3-out==1<<20?fwrite(out,1,1<<20,stdout),p3=out,0:0,*p3++=x)
#define puts(x) write(x,'\n')
#endif
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[25];
			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!=' '&&st!='\r')s[++len]=st,st=getchar();
		s[++len]='\0';
	}
	template<typename T> inline void read(T &s)
	{
		char ch=getchar();s=0;
		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;
	}
	inline void edl(){putchar('\n');}
	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...);}
	#ifdef FastO
	struct Writer{~Writer(){fwrite(out,1,p3-out,stdout);}}Writ;
	#endif
}
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;}
	inline int Cmod(int x){return (x%MOD+MOD)%MOD;}
	inline void Mmod(int&x){x=(x%MOD+MOD)%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 n,m;
	int deg[4010];
	pii edge[4010];
	bool del[4010],vis[4010];
	vi L,R;
	map<pii,int> hash;
	
	const int N=4000,M=8000;
    int cnt=1,num,col,low[N+10],dfn[N+10],head[N+10],to[M+10],nex[M+10],c[N+10];
    inline void add(int x,int y){to[++cnt]=y,nex[cnt]=head[x],head[x]=cnt;}
    stack<int> st;
    void tarjan(int x,int fromi)
    {
        dfn[x]=low[x]=++num,st.e(x);
        for(int i=head[x];i;i=nex[i])
        {
            if(i==(fromi^1))continue;
            if(!dfn[to[i]])
			{
				tarjan(to[i],i),low[x]=min(low[x],low[to[i]]);
				if(low[to[i]]>dfn[x])
				{
					del[hash[mp(x,to[i])]]=1;
					L.eb(hash[mp(x,to[i])]);
				}
			}
            else low[x]=min(low[x],dfn[to[i]]);
        }
        if(low[x]==dfn[x])
        {
            int y;++col;
            do y=st.top(),c[y]=col,st.pop();while(y!=x);
        }
    }
	
	void mian()
	{
		int x,y;
		hash.clear();
		L.clear(),R.clear();
		memset(del,0,sizeof(del));
		read(n,m);
		for(int i=1;i<=m;++i)
		{
			read(x,y),edge[i]=mp(x,y);
			hash[mp(x,y)]=hash[mp(y,x)]=i;
		}
		while(L.size()+R.size()<m)
		{
			int pre=L.size()+R.size();
			cnt=1,memset(head,0,sizeof(head));
			col=num=0,memset(dfn,0,sizeof(dfn));
			for(int i=1;i<=m;++i)if(!del[i])
			add(edge[i].fi,edge[i].se),add(edge[i].se,edge[i].fi);
			for(int i=1;i<=n;++i)if(!dfn[i])tarjan(i,0);
			memset(vis,0,sizeof(vis)),memset(deg,0,sizeof(deg));
			for(int i=1;i<=m;++i)if(!del[i])
			++deg[edge[i].fi],++deg[edge[i].se];
			for(int i=1;i<=m;++i)if(!vis[c[edge[i].fi]])
			{
				if(deg[edge[i].fi]==2&&deg[edge[i].se]==2)
				del[i]=1,vis[c[edge[i].fi]]=1,R.eb(i);
			}
			if(L.size()+R.size()==pre)
			return puts("-1"),void();
		}
		reverse(all(R));
		for(auto p:L)write(p);
		for(auto p:R)write(p);
		puts("");
	}
	inline void Mian()
	{
		int T=1,C;
		read(T);
		while(T--)mian();
	}
}
bool ED;
signed main()
{
//	ios::sync_with_stdio(0);
//	freopen("1.in","r",stdin);
//	freopen("1.out","w",stdout);
	WrongAnswer_90::Mian();
	return 0;
}

详细

Test #1:

score: 100
Accepted
time: 0ms
memory: 5756kb

input:

1
4 4
1 2
2 3
3 4
4 2

output:

1 3 4 2 

result:

ok Correct

Test #2:

score: 0
Accepted
time: 1ms
memory: 3716kb

input:

4
4 5
1 2
2 3
3 4
3 1
1 4
5 3
1 2
2 3
3 4
9 10
3 5
1 8
5 8
4 9
6 7
7 9
1 2
1 4
2 4
4 6
8 10
1 4
3 8
2 5
3 4
1 5
5 8
2 8
5 7
4 5
3 7

output:

-1
3 2 1 
1 3 2 10 6 4 9 8 7 5 
-1

result:

ok Correct

Test #3:

score: -100
Wrong Answer
time: 21ms
memory: 4656kb

input:

50
3214 2907
970 1929
2860 3033
1322 2296
931 1192
861 2505
831 2469
231 2549
1 2306
1765 1842
999 3171
177 2007
1798 1894
827 3180
673 1738
1163 1573
2213 2781
2766 3200
1663 2197
1797 2281
315 2637
442 2689
558 2874
1520 2591
651 1923
1133 2920
1747 2412
1104 1528
313 2487
632 3124
660 2182
1581 2...

output:

2723 494 1770 2783 1573 2251 2792 1051 2701 2571 876 2536 1759 2468 2856 2532 1699 1815 1519 2410 2220 1939 451 1640 674 1523 2394 1159 2093 2371 1937 528 2403 216 2487 1224 2118 2128 1507 2880 2859 2886 1223 2740 1467 1623 1440 594 1400 2462 2537 127 2284 1141 2782 2167 325 1490 2743 2508 2873 1694...

result:

wrong answer Wrong - your answer is not a permutaion