QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#201811#1774. Customs Controlsliujiaxi123456WA 64ms14184kbC++143.6kb2023-10-05 16:52:302023-10-05 16:52:31

Judging History

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

  • [2023-10-05 16:52:31]
  • 评测
  • 测评结果:WA
  • 用时:64ms
  • 内存:14184kb
  • [2023-10-05 16:52:30]
  • 提交

answer

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

const int Maxn = 2e5+5, Maxm = 2e5+5;
const int INF = 2e9+5;

namespace EDGE {
	int sz, head[Maxn];
	struct Edge { int next, from, to; } edge[Maxm*2];
	inline void Add_edge(int u, int v) {
//		printf("Add_edge(%d, %d)\n", u, v);
		edge[++sz] = {head[u], u, v};
		head[u] = sz;
	}
} using namespace EDGE;

namespace EDGE2 {
	int sz2, head2[Maxn];
	struct Edge2 { int next, from, to; } edge2[Maxm*2];
	inline void Add_edge2(int u, int v) {
		edge2[++sz2] = {head2[u], u, v};
		head2[u] = sz2;
	}
} using namespace EDGE2;

namespace Josh_Liu {

	int N, M, K, ds[Maxn], dt[Maxn], deg[Maxn], t[Maxn], KK; 
	bool f[Maxn], flag[Maxn], bj[Maxn], vis[Maxn];
	
	struct Dij {
		int pos, dis;
		bool operator < (const Dij &a) const { return dis > a.dis; }
	}; priority_queue <Dij> h;
	
	inline void dijstra(int s, int dis[]) {
		for(int i=1; i<=N; i++)	dis[i] = INF, vis[i] = 0;
		dis[s] = 0, h.push( Dij {s, dis[s]} );
		while(!h.empty()) {
			int u = h.top().pos; h.pop();
			if(vis[u])	continue;
			vis[u] = 1;
			for(int i=head[u]; i; i=edge[i].next) {
				int v = edge[i].to;
				if(dis[u]+t[v] <= dis[v]) {
					dis[v] = dis[u]+t[v];
					h.push( Dij {v, dis[v]} );
				}
			} 
		}
	}
	
	queue <int> q;
	
	inline bool check(int s) {
		memset(f, 1, sizeof(f));
		f[s] = 0, q.push(s);
		while(!q.empty()) {
			int u = q.front(); q.pop();
			for(int i=head2[u]; i; i=edge2[i].next) {
				int v = edge2[i].to;
				f[v] = f[v] & (f[u] || flag[u]==flag[v]);
				if(!(--deg[v]))	q.push(v);
			}
		}
		return f[N];
	}
 
	int main() {
		srand(time(0));
		scanf("%d%d%d", &N, &M, &K);
//		printf("N:%d, M:%d, K:%d\n", N, M, K);
		for(int i=1; i<=N; i++)	scanf("%d", &t[i]);
		int u, v;
		for(int i=1; i<=M; i++) {
			scanf("%d%d", &u, &v);
			Add_edge(u, v), Add_edge(v, u);
		}
		dijstra(1, ds), dijstra(N, dt);
//		for(int i=1; i<=N; i++)	printf("ds[%d] = %d, dt[%d] = %d\n", i, ds[i], i, dt[i]);
		for(int i=1; i<=sz; i++) {
			int u = edge[i].from, v = edge[i].to;
//			printf("u:%d, v:%d\n", u, v);
			if(ds[u]+dt[v]+t[N] == ds[N]) {
//				printf("Add_edge2(%d, %d)\n", u, v);
				Add_edge2(u, v), bj[u] = bj[v] = 1, deg[v]++;
			}
		}
		int cnt = 0;
		for(int i=1; i<=N; i++)	if(!bj[i])	cnt++; // i为孤立点 
//		for(int i=1; i<=N; i++)	printf("flag[%d] = %d\n", i, flag[i]);
//		printf("K:%d, cnt:%d\n", K, cnt);
		if(cnt == K) {
			for(int i=1; i<=N; i++)	putchar(bj[i] ?'S' :'N');
		} else if(cnt == N-K) {
			for(int i=1; i<=N; i++)	putchar(bj[i] ?'N' :'S');
		} else if(cnt > K) {
			for(int i=1; i<=N && K>0; i++)	if(!bj[i])	flag[i] = 1, K--;
			for(int i=1; i<=N; i++)	putchar(flag[i] ?'N' :'S');
		} else if(cnt > N-K) {
			for(int i=1; i<=N && N>K; i++)	if(!bj[i])	flag[i] = 1, K++;
			for(int i=1; i<=N; i++)	putchar(flag[i] ?'S' :'N');
		} else {
			for(int cnt=0; cnt<=3000; cnt++) {
				for(int i=1; i<=K; i++)	{
					u = rand()%N+1;
					while(flag[u])	u = rand()%N+1;
					flag[u] = 1;
				}
	//			for(int i=1; i<=N; i++)	printf("flag[%d] = %d\n", i, flag[i]);
				if(check(1)) {
					for(int i=1; i<=N; i++)	{
						if(flag[i] == 0)	putchar('S');
						else	putchar('N');
					}
					return 0;
				}
				memset(flag, 0, sizeof(flag));
			}
			puts("impossible");
		}
		return 0;
	}

}

int main() {
//	freopen("ex_data3.in", "r", stdin);
//	freopen("data_ljx.in", "r", stdin);
//	freopen("data.in", "r", stdin);
//	freopen("data.out", "w", stdout);
	Josh_Liu::main();
	return 0;
}
// 15M
/*
8 9 4
3 3 1 2 2 3 2 1
1 2
1 3
1 4
2 5
3 6
4 7
5 8
6 8
7 8

*/

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 9920kb

input:

5 10 2
1 1 1 1 1
3 4
5 4
3 1
4 1
3 5
2 1
2 4
2 5
1 5
2 3

output:

NSSSN

result:

ok accepted

Test #2:

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

input:

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

output:

SNNNNNSSSS

result:

ok accepted

Test #3:

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

input:

2 1 2
6124 7094
2 1

output:

NN

result:

ok accepted

Test #4:

score: 0
Accepted
time: 15ms
memory: 10384kb

input:

2 1 1
6901 1417
2 1

output:

impossible

result:

ok accepted

Test #5:

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

input:

50 67 25
5 10 5 4 3 3 8 7 10 4 6 6 9 8 5 1 5 9 3 2 3 8 9 9 2 8 7 8 9 8 3 3 10 7 5 5 7 1 6 9 4 6 9 10 4 10 9 10 9 5
45 35
27 17
11 14
34 1
49 37
4 2
9 3
42 9
13 25
40 32
38 17
28 1
26 14
13 19
41 40
38 40
12 6
14 7
47 25
30 21
32 22
7 6
16 12
15 9
20 16
29 3
21 8
19 9
18 23
43 5
5 3
11 35
10 7
36 16
...

output:

SNSNSNNSNNNNNNNNNNNNNNSNNNNNNNSSSSSSSSSSSSSSSSSSSS

result:

ok accepted

Test #6:

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

input:

100 99 50
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
34 11
79 3
36 30
59 24
83 14
88 23
19 9
44 19
91 11
40 14
58 37
99 30
45 12
81 66
38 35
73...

output:

SNSNSNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

result:

ok accepted

Test #7:

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

input:

200 400 100
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

output:

SNSSNNNNNSNNNNNNNNNNNNNNNNNNNNNNNNNNSNNNNNNNNNNNNNNNNNNNNNNNNNSNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

result:

ok accepted

Test #8:

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

input:

400 2000 50
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

output:

SNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS...

result:

ok accepted

Test #9:

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

input:

800 1600 400
6778 2494 1425 4552 1937 7148 830 9892 8936 4711 2727 7103 8171 3131 3086 8687 7433 3238 6572 1018 9461 9638 1484 666 3143 9266 5392 8490 5948 6927 9595 2267 7386 411 8292 5330 968 8697 1138 8303 5827 8830 8821 7204 2407 4636 985 7995 431 4492 6978 4675 2773 3208 6624 1770 6094 1576 590...

output:

SNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSNNNNNNN...

result:

ok accepted

Test #10:

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

input:

1601 1637 800
11 20 4 18 4 15 7 15 4 4 3 8 16 18 9 7 9 16 9 4 16 3 11 14 19 2 19 20 15 5 2 8 6 10 8 14 20 8 10 6 9 13 16 5 14 19 18 13 7 17 19 18 9 15 3 2 12 2 2 12 3 3 16 5 4 16 8 17 10 3 14 18 15 13 3 10 14 5 4 18 18 10 9 14 14 7 5 4 12 13 7 13 4 8 13 20 14 6 3 6 18 1 5 20 7 11 1 1 11 5 16 2 11 7 ...

output:

SNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN...

result:

ok accepted

Test #11:

score: 0
Accepted
time: 4ms
memory: 10060kb

input:

10000 9999 500
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1...

output:

SSNNNNNSNSNNNNNNNNNSNNNNNNNNNNNNNNNSNNNNNNNNNNNNNNNNSNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSNNNNNNNNNNNNNNNNNNNNNNNNSNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSNNNNNNNNSNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN...

result:

ok accepted

Test #12:

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

input:

10000 20000 5000
8295 3745 794 1318 1691 7504 9376 1326 507 2339 256 9868 9674 3268 6993 4296 3924 9424 3276 5493 3019 1786 832 6542 5285 2221 6770 1310 1695 3270 5800 1424 7943 8349 6731 1523 8935 4374 5 7139 808 5421 6233 7507 5372 4693 382 1098 1083 8487 1602 5114 9404 318 9440 4081 1355 38 6967 ...

output:

SNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN...

result:

ok accepted

Test #13:

score: 0
Accepted
time: 61ms
memory: 14184kb

input:

100000 200000 50000
6610 9169 2169 6552 433 1085 6451 9008 2102 5083 8156 6290 9891 531 7776 2219 6685 2750 6288 2201 2433 1734 4059 8849 7272 6446 279 6743 318 4626 1731 496 2821 7543 9915 143 8983 1939 4554 2999 8949 6805 7900 9442 4881 5738 3164 651 8646 7282 6329 2213 2211 6679 3677 2075 6931 79...

output:

SNSNNNNNSNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN...

result:

ok accepted

Test #14:

score: 0
Accepted
time: 30ms
memory: 12588kb

input:

100000 100010 50000
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

output:

SNSNNNNSNSNNNNNNNNNNNNNSNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN...

result:

ok accepted

Test #15:

score: 0
Accepted
time: 34ms
memory: 12868kb

input:

100000 100048 50000
10 4 9 3 4 5 8 10 6 2 10 7 1 2 2 9 9 2 7 6 10 3 2 2 8 5 10 5 6 5 3 1 7 6 5 3 5 9 1 3 1 7 10 8 8 5 4 4 8 10 6 10 10 6 4 10 2 6 8 9 2 5 6 10 3 7 9 8 7 4 9 9 2 2 5 7 9 9 7 4 7 1 8 8 5 7 8 3 9 6 3 6 6 6 3 8 1 1 10 8 6 9 7 3 10 10 4 4 10 1 7 2 1 7 10 2 9 5 7 7 1 10 4 6 4 1 6 1 1 2 6 7...

output:

SSNSNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN...

result:

ok accepted

Test #16:

score: 0
Accepted
time: 64ms
memory: 13804kb

input:

100000 200000 1
3483 3913 2465 4127 2680 1151 6612 1498 6652 966 688 8449 312 9341 1289 2574 7250 2310 8421 5242 4799 7903 4517 8356 6465 5466 2562 2052 9897 8666 6149 9850 184 9535 9355 8845 7330 2183 1492 4985 2352 1362 1928 4940 5895 8893 2251 6792 4679 2146 2677 3667 4218 5797 8433 3462 8459 806...

output:

SNSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS...

result:

ok accepted

Test #17:

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

input:

10 14 4
10000 10000 3921 6078 1 10000 10000 10000 10000 10000
10 6
1 2
1 8
10 8
3 5
1 3
5 4
1 6
10 2
10 4
10 7
10 9
1 7
1 9

output:

SSSNSNSNSN

result:

ok accepted

Test #18:

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

input:

10 15 5
10000 1 9399 10000 10000 600 10000 10000 10000 10000
10 5
1 8
10 3
1 10
10 9
6 2
10 7
1 7
1 6
1 5
1 4
10 8
10 4
2 3
1 9

output:

SNNNNNSSSS

result:

ok accepted

Test #19:

score: -100
Wrong Answer
time: 2ms
memory: 10328kb

input:

100 168 50
10000 10000 10000 10000 10000 6586 1467 10000 6994 2298 10000 1776 10000 1 2243 3413 10000 10000 3006 10000 7548 2493 1 1 1 10000 7506 7757 6994 3413 10000 1 10000 1 4048 10000 1 2493 6587 2451 10000 3005 1 10000 7701 7701 1 2451 10000 10000 10000 8020 10000 4049 10000 1 7702 8019 10000 1...

output:

SSNSNNSSSSSNSNSNNNSNSNNSNSSNNSNNSSNSNNSSNSNNSSSSSNSNSSSSSNSNSSNSNSNNNSNNNSSSSNNNNSSNNNNNSNNNSSSSNNNN

result:

wrong answer an alternating shortest path existed