QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#210900#6331. Jewel GameExplodingKonjacAC ✓168ms9028kbC++205.6kb2023-10-11 21:14:082023-10-11 21:14:08

Judging History

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

  • [2023-10-11 21:14:08]
  • 评测
  • 测评结果:AC
  • 用时:168ms
  • 内存:9028kb
  • [2023-10-11 21:14:08]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
// #define OPENIOBUF

namespace FastIO
{

class FastIOBase
{
 protected:
#ifdef OPENIOBUF
	static const int BUFSIZE=1<<16;
	char buf[BUFSIZE+1];
	int buf_p=0;
#endif
	FILE *target;
	FastIOBase(FILE *f): target(f){}
	~FastIOBase()=default;
 public:
#ifdef OPENIOBUF
	virtual void flush()=0;
#endif
};

class FastOutput final: public FastIOBase
{
#ifdef OPENIOBUF
 public:
	inline void flush()
	{ fwrite(buf,1,buf_p,target),buf_p=0; }
#endif
 private:
	inline void __putc(char x)
	{
#ifdef OPENIOBUF
		if(buf[buf_p++]=x,buf_p==BUFSIZE) flush();
#else
		putc(x,target);
#endif
	}
	template<typename T>
	inline void __write(T x)
	{
		char stk[64],*top=stk;
		if(x<0) return __putc('-'),__write(-x);
		do *(top++)=x%10,x/=10; while(x);
		for(;top!=stk;__putc(*(--top)+'0'));
	}
 public:
	FastOutput(FILE *f=stdout): FastIOBase(f){}
#ifdef OPENIOBUF
	~FastOutput(){ flush(); }
#endif
	inline FastOutput &operator <<(char x)
	{ return __putc(x),*this; }
	inline FastOutput &operator <<(const char *s)
	{ for(;*s;__putc(*(s++)));return *this; }
	inline FastOutput &operator <<(const string &s)
	{ return (*this)<<s.c_str(); }
	template<typename T>
	inline enable_if_t<is_integral<T>::value,FastOutput&> operator <<(const T &x)
	{ return __write(x),*this; }
	template<typename ...T>
	inline void writesp(const T &...x)
	{ initializer_list<int>{(this->operator<<(x),__putc(' '),0)...}; }
	template<typename ...T>
	inline void writeln(const T &...x)
	{ initializer_list<int>{(this->operator<<(x),__putc('\n'),0)...}; }
	template<typename Iter>
	inline void writesp(Iter begin,Iter end)
	{ while(begin!=end) (*this)<<*(begin++)<<' '; }
	template<typename Iter>
	inline void writeln(Iter begin,Iter end)
	{ while(begin!=end) (*this)<<*(begin++)<<'\n'; }
}qout;

class FastInput final: public FastIOBase
{
#ifdef OPENIOBUF
 public:
	inline void flush()
	{ buf[fread(buf,1,BUFSIZE,target)]=EOF,buf_p=0; }
#endif
 private:
	bool __eof;
	inline char __getc()
	{
		if(__eof) return EOF;
#ifdef OPENIOBUF
		if(buf_p==BUFSIZE) flush();
		char ch=buf[buf_p++];
#else
		char ch=getc(target);
#endif
		return ~ch?ch:(__eof=true,EOF);
	}
	inline void __ungetc(char c)
	{
		__eof=false;
#ifdef OPENIOBUF
		buf_p--;
#else
		ungetc(c,target);
#endif
	}
 public:
	FastInput(FILE *f=stdin): FastIOBase(f),__eof(false)
#ifdef OPENIOBUF
	{ buf_p=BUFSIZE; }
	inline bool eof()const { return buf[buf_p]==EOF; }
#else
	{}
	inline bool eof()const { return feof(target); }
#endif
	inline char peek() { return __getc(); }
	explicit inline operator bool()const { return !__eof; }
	inline FastInput &operator >>(char &x)
	{ while(isspace(x=__getc()));return *this; }
	template<typename T>
	inline enable_if_t<is_integral<T>::value,FastInput&> operator >>(T &x)
	{
		char ch,sym=0;x=0;
		while(isspace(ch=__getc()));
		if(__eof) return *this;
		if(ch=='-') sym=1,ch=__getc();
		for(x=0;isdigit(ch);x=(x<<1)+(x<<3)+(ch^48),ch=__getc());
		return __ungetc(ch),sym?x=-x:x,*this;
	}
	inline FastInput &operator >>(char *s)
	{
		while(isspace(*s=__getc()));
		if(__eof) return *this;
		for(;!isspace(*s) && !__eof;*(++s)=__getc());
		return __ungetc(*s),*s='\0',*this;
	}
	inline FastInput &operator >>(string &s)
	{
		char str_buf[(1<<8)+1]={0},*p=str_buf;
		char *const buf_end=str_buf+(1<<8);
		while(isspace(*p=__getc()));
		if(__eof) return *this;
		for(s.clear(),p++;;p=str_buf)
		{
			for(;p!=buf_end && !isspace(*p=__getc()) && !__eof;p++);
			if(p!=buf_end) break;
			s.append(str_buf);
		}
		__ungetc(*p),*p='\0',s.append(str_buf);
		return *this;
	}
	template<typename ...T>
	inline void read(T &...x)
	{ initializer_list<int>{(this->operator>>(x),0)...}; }
	template<typename Iter>
	inline void read(Iter begin,Iter end)
	{ while(begin!=end) (*this)>>*(begin++); }
#undef __ungetc
}qin;

} // namespace FastIO
using FastIO::qin,FastIO::qout;

using LL=long long;
using LD=long double;
using UI=unsigned int;
using ULL=unsigned long long;
constexpr int INF=2e9;

#ifndef DADALZY
#define FILEIO(file) freopen(file".in","r",stdin),freopen(file".out","w",stdout);
#else
#define FILEIO(file) freopen("ex_jewel2.in","r",stdin)
#endif

int n,m,K,A,B,a[35],b[35];
vector<int> g1[35];

int f[1<<10][35][35],g[35][35],deg[35][35];
bool vis[35][35];
vector<pair<int,int>> g2[35][35];
void solve(int S)
{
	priority_queue<pair<int,pair<int,int>>> q;
	function<void(int,int)> upd=[&](int i,int j)->void
	{
		if(vis[i][j]) return;
		f[S][i][j]=g[i][j],vis[i][j]=true;
		for(auto &[x,y]: g2[i][j])
		{
			if(-f[S][i][j]>g[x][y])
				q.emplace(g[x][y]=-f[S][i][j],make_pair(x,y));
			if(!--deg[x][y]) upd(x,y);
		}
	};
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			g[i][j]=-INF,deg[i][j]=0,vis[i][j]=false,g2[i][j].clear();
	for(int i=1;i<=n;i++) if(~S&a[i])
		for(int j=1;j<=n;j++) if(~S&a[j])
			for(auto &v: g1[i])
			{
				if(S&a[v]) g[i][j]=max(g[i][j],b[v]-f[S^a[v]][j][v]);
				else g2[j][v].emplace_back(i,j),deg[i][j]++;
			}
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			if(!deg[i][j]) upd(i,j);
	q=decltype(q){};
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			if(!vis[i][j]) q.emplace(g[i][j],make_pair(i,j));
	while(!q.empty())
	{
		auto [d,p]=q.top();
		auto [i,j]=p;
		q.pop();
		if(vis[i][j]) continue;
		if(g[i][j]>0) upd(i,j);
		else break;
	}
}

int main()
{
	qin>>n>>m>>A>>B;
	for(int i=1,u,v;i<=m;i++) qin>>u>>v,g1[u].push_back(v);
	qin>>K;
	fill(a+1,a+n+1,1<<K);
	for(int i=1,x,y;i<=K;i++) qin>>x>>y,a[x]=(1<<(i-1)),b[x]=y;
	for(int i=0;i<(1<<K);i++) solve(i);
	qout<<f[(1<<K)-1][A][B]<<'\n';
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

input:

5 16 1 1
1 2
1 3
1 4
1 5
2 3
2 4
2 5
3 2
3 4
3 5
4 2
4 3
4 5
5 2
5 3
5 4
4
2 4
3 84
4 38
5 96

output:

46

result:

ok 1 number(s): "46"

Test #2:

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

input:

8 16 8 4
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 1
1 5
2 6
3 7
4 8
5 1
6 2
7 3
8 4
6
1 29
2 34
3 41
5 7
6 26
7 94

output:

-23

result:

ok 1 number(s): "-23"

Test #3:

score: 0
Accepted
time: 0ms
memory: 3684kb

input:

5 5 2 1
1 1
2 3
3 4
4 5
5 2
2
4 1000000
5 100000

output:

1100000

result:

ok 1 number(s): "1100000"

Test #4:

score: 0
Accepted
time: 0ms
memory: 6068kb

input:

10 20 1 2
1 4
1 7
2 2
2 4
3 6
3 3
4 8
4 7
5 7
5 1
6 9
6 2
7 9
7 3
8 8
8 6
9 7
9 8
10 10
10 2
8
3 92067840
4 2874502
5 36253165
6 70758738
7 4768969
8 16029185
9 16207515
10 44912151

output:

132484345

result:

ok 1 number(s): "132484345"

Test #5:

score: 0
Accepted
time: 135ms
memory: 9016kb

input:

30 900 1 2
2 25
8 21
22 16
26 29
12 24
1 8
7 14
22 27
27 20
5 24
21 21
21 10
30 28
5 16
12 3
16 1
21 2
24 23
24 14
9 7
9 18
20 22
6 1
30 3
11 6
2 17
18 13
28 20
5 15
26 16
9 14
30 23
4 23
4 2
9 5
21 29
1 30
12 14
16 27
28 22
15 7
23 10
13 16
1 15
22 9
13 12
30 18
10 5
25 28
3 17
30 30
7 17
11 24
12 ...

output:

40915541

result:

ok 1 number(s): "40915541"

Test #6:

score: 0
Accepted
time: 140ms
memory: 8748kb

input:

30 900 1 1
16 16
26 15
20 25
9 28
27 1
25 18
12 6
7 26
14 15
28 21
18 19
12 3
26 29
28 24
8 8
22 9
18 3
9 2
26 9
29 21
13 28
21 24
18 2
30 8
1 25
19 26
4 19
2 25
14 27
14 12
2 23
23 15
16 5
9 29
10 27
29 16
16 20
5 8
3 28
12 12
30 7
16 29
30 17
3 11
21 26
18 14
14 6
26 4
21 29
3 6
11 15
22 4
14 18
1...

output:

38892888

result:

ok 1 number(s): "38892888"

Test #7:

score: 0
Accepted
time: 0ms
memory: 3648kb

input:

9 58 5 4
4 6
8 9
5 3
6 5
7 1
5 9
6 3
2 1
4 8
2 9
3 4
1 2
8 5
5 2
1 3
2 3
9 5
4 3
3 1
5 4
9 1
6 7
2 8
7 3
2 5
8 3
2 7
5 8
4 7
9 2
4 5
5 7
3 7
6 8
1 4
9 4
9 8
7 9
1 1
4 4
3 6
1 8
6 6
5 5
9 9
5 1
1 6
2 4
3 2
5 6
3 3
2 6
7 4
6 2
3 9
6 9
8 8
9 7
2
1 28323506
7 18381394

output:

46704900

result:

ok 1 number(s): "46704900"

Test #8:

score: 0
Accepted
time: 0ms
memory: 3988kb

input:

8 11 4 4
4 6
7 6
8 2
5 8
3 4
2 3
8 6
5 1
6 6
1 8
8 4
4
2 75547123
5 9278878
7 13909469
8 57425260

output:

0

result:

ok 1 number(s): "0"

Test #9:

score: 0
Accepted
time: 0ms
memory: 3720kb

input:

4 10 1 2
2 3
1 3
4 4
1 4
3 3
4 3
1 2
3 1
2 4
1 1
2
3 35669800
4 36664186

output:

994386

result:

ok 1 number(s): "994386"

Test #10:

score: 0
Accepted
time: 6ms
memory: 6244kb

input:

17 125 15 14
12 5
13 11
13 12
9 13
16 2
13 3
1 14
16 14
13 10
3 2
17 14
14 12
8 11
10 1
9 8
14 2
13 6
3 3
7 1
11 12
16 17
10 4
15 10
12 11
10 10
4 9
14 16
9 3
4 8
15 5
2 12
7 11
14 1
10 3
4 11
4 4
8 12
8 7
9 16
15 13
17 9
1 10
8 5
13 4
13 16
15 15
9 10
17 4
10 17
2 16
13 1
15 9
5 7
14 11
10 9
5 5
9 ...

output:

-33927098

result:

ok 1 number(s): "-33927098"

Test #11:

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

input:

11 18 8 7
5 11
9 3
1 8
6 11
11 5
5 9
1 9
2 5
10 2
4 10
7 1
6 2
10 8
3 9
8 6
3 7
7 11
2 10
5
2 22754552
5 84549882
6 19922948
9 13449629
11 18334746

output:

-73656757

result:

ok 1 number(s): "-73656757"

Test #12:

score: 0
Accepted
time: 0ms
memory: 3612kb

input:

3 8 2 3
1 3
3 2
1 2
3 3
2 1
2 3
3 1
2 2
1
1 53102229

output:

53102229

result:

ok 1 number(s): "53102229"

Test #13:

score: 0
Accepted
time: 0ms
memory: 3648kb

input:

3 6 1 1
1 3
2 3
3 1
2 2
1 2
2 1
1
3 88674071

output:

88674071

result:

ok 1 number(s): "88674071"

Test #14:

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

input:

10 22 3 3
5 6
2 9
1 4
6 4
7 9
3 4
4 3
4 2
6 3
10 8
8 1
8 2
9 4
5 10
4 10
7 3
7 6
10 9
1 1
1 10
10 5
2 3
4
1 12017417
2 33560186
9 68408625
10 44302781

output:

91168637

result:

ok 1 number(s): "91168637"

Test #15:

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

input:

11 76 11 6
11 9
4 8
4 2
11 4
7 7
9 8
5 2
7 3
1 4
8 8
6 1
2 7
7 4
9 6
10 6
7 9
3 5
1 8
2 11
1 6
4 1
10 2
4 11
4 4
2 8
8 9
11 10
8 4
8 5
3 4
4 5
11 5
11 8
10 3
8 3
7 6
4 9
1 7
1 10
7 5
10 4
5 6
6 10
5 5
7 11
8 11
2 2
6 9
1 5
2 3
8 1
3 10
6 3
9 10
5 8
7 10
1 11
4 3
2 9
5 10
9 5
3 1
5 7
6 5
9 3
5 11
3 6...

output:

18844044

result:

ok 1 number(s): "18844044"

Test #16:

score: 0
Accepted
time: 0ms
memory: 3884kb

input:

5 8 2 5
5 4
4 1
3 5
1 5
1 2
2 5
3 3
3 1
3
1 89861734
3 78638917
4 76333187

output:

-166194921

result:

ok 1 number(s): "-166194921"

Test #17:

score: 0
Accepted
time: 54ms
memory: 8600kb

input:

24 34 21 10
17 17
19 21
22 24
8 4
10 11
7 11
18 20
9 15
17 7
2 8
5 4
13 6
11 5
21 11
12 16
7 23
3 13
16 7
1 3
23 18
6 2
20 24
19 20
14 13
15 9
2 14
4 24
24 1
1 4
5 12
11 22
14 23
2 20
8 15
10
4 32206739
5 86258057
6 28124909
8 30711780
17 1439605
18 98665106
19 35462765
20 42495740
22 94507837
23 65...

output:

107651072

result:

ok 1 number(s): "107651072"

Test #18:

score: 0
Accepted
time: 16ms
memory: 4376kb

input:

25 157 7 9
12 18
16 14
7 14
4 11
24 20
19 4
19 6
17 4
12 16
21 14
18 25
22 10
15 3
14 11
5 16
15 9
24 13
10 14
25 1
25 22
25 8
18 20
17 11
12 21
2 6
14 14
18 13
17 7
9 16
13 21
16 25
17 8
21 2
19 2
15 4
10 8
15 11
20 21
13 1
7 11
9 11
20 12
7 10
15 12
16 16
2 22
21 17
21 3
16 9
22 1
6 24
9 23
12 10
...

output:

27571523

result:

ok 1 number(s): "27571523"

Test #19:

score: 0
Accepted
time: 145ms
memory: 8868kb

input:

30 594 3 3
21 8
13 27
26 24
17 20
10 1
24 14
30 26
7 22
14 3
16 1
15 28
2 20
5 23
23 16
24 6
4 29
19 24
25 13
19 13
24 27
16 3
18 19
5 18
1 30
29 18
1 8
30 6
10 16
30 3
29 10
23 17
17 2
16 2
1 16
3 1
22 19
5 17
4 14
19 23
9 29
22 16
18 15
2 25
10 9
28 7
12 12
2 10
10 19
3 6
15 19
6 21
7 23
23 24
4 1...

output:

20858678

result:

ok 1 number(s): "20858678"

Test #20:

score: 0
Accepted
time: 168ms
memory: 8712kb

input:

30 194 4 8
16 26
23 10
12 22
18 9
9 21
17 24
14 18
4 26
4 17
12 25
16 6
6 24
27 3
17 17
5 6
8 25
5 18
8 1
19 5
14 21
16 7
1 23
11 11
19 27
8 5
5 8
25 28
4 1
28 17
19 25
25 1
23 24
2 9
17 26
15 10
9 11
5 30
22 24
20 2
16 19
9 19
12 12
30 8
22 16
14 11
16 17
7 29
12 18
23 23
5 24
1 14
26 19
19 14
25 5...

output:

42920444

result:

ok 1 number(s): "42920444"

Test #21:

score: 0
Accepted
time: 112ms
memory: 8540kb

input:

30 59 11 13
2 5
18 16
9 19
5 22
30 4
23 8
3 9
17 28
12 28
12 13
7 1
17 16
7 28
22 6
22 21
23 16
8 27
27 14
4 4
3 21
1 27
22 11
15 6
7 3
26 26
29 15
15 12
4 14
21 9
24 2
13 11
3 22
18 20
29 10
11 16
26 19
10 8
20 23
15 2
20 2
19 12
20 10
15 15
25 8
10 24
1 24
9 10
16 17
3 25
9 8
25 17
14 7
14 28
8 26...

output:

235374574

result:

ok 1 number(s): "235374574"

Test #22:

score: 0
Accepted
time: 167ms
memory: 8592kb

input:

30 91 15 24
17 26
26 4
7 19
22 15
1 7
17 27
21 24
29 15
12 22
10 16
18 2
1 3
25 7
16 27
21 8
25 10
16 19
8 25
14 24
7 9
5 4
11 22
8 4
21 26
23 22
21 12
14 29
20 27
5 23
7 16
29 7
2 26
9 27
2 11
12 29
20 1
30 3
24 11
3 26
8 17
13 12
5 22
28 15
24 6
22 29
23 16
19 1
9 20
1 11
4 5
2 4
6 23
13 29
11 14
...

output:

57866396

result:

ok 1 number(s): "57866396"

Test #23:

score: 0
Accepted
time: 153ms
memory: 8884kb

input:

30 74 24 24
25 11
14 15
23 23
2 13
6 26
27 14
30 14
11 10
26 16
3 27
20 10
21 5
19 10
14 1
4 11
10 27
20 24
6 23
5 14
25 28
27 12
24 7
17 10
13 4
30 27
12 25
22 27
20 25
29 20
17 29
23 13
22 23
16 20
20 4
28 20
13 12
18 27
7 30
1 28
18 1
30 23
2 8
6 30
27 19
16 26
24 21
3 8
28 13
28 4
14 5
19 21
23 ...

output:

30736171

result:

ok 1 number(s): "30736171"

Test #24:

score: 0
Accepted
time: 144ms
memory: 9028kb

input:

30 542 11 11
19 24
24 14
25 25
11 6
30 21
14 19
19 9
2 22
9 19
21 5
23 27
27 15
14 10
13 3
22 5
3 5
28 14
22 13
14 22
22 7
11 22
23 19
27 12
6 11
24 25
23 17
26 28
27 24
10 29
5 30
17 17
29 7
28 4
6 17
6 30
20 19
2 2
18 22
3 29
7 12
27 28
25 18
30 23
22 15
11 19
10 28
2 7
4 4
11 20
2 11
11 14
23 7
2...

output:

50977437

result:

ok 1 number(s): "50977437"