Submission #933910

# Submission time Handle Problem Language Result Execution time Memory
933910 2024-02-26T14:51:57 Z alexander707070 Airline Route Map (JOI18_airline) C++14
0 / 100
495 ms 35424 KB
#include<bits/stdc++.h>
#include "Alicelib.h"
#define MAXN 2007

using namespace std;

int n,m,num;
vector< pair<int,int> > edges;

void Alice( int N, int M, int A[], int B[]){

	srand(42070);

	n=N; m=M;
	num=17;

	for(int i=0;i<n;i++){
		for(int f=10;f>=0;f--){
			if(((1<<f)&(i+num))>0)edges.push_back({i,n+f});
		}
	}

	for(int i=n;i<=n+10;i++){
		edges.push_back({i,n+11});
		if(i<n+10)edges.push_back({i,i+1});
	}

	for(int i=0;i<m;i++){
		edges.push_back({A[i],B[i]});
	}

	InitG( n+12, edges.size() );
	for(int i=0;i<edges.size();i++){
		MakeG(i,edges[i].first,edges[i].second);
	}
}

#include <bits/stdc++.h>
#include "Boblib.h"
#define MAXN 2007

using namespace std;

int v,u,e,cnt,root,curr;
vector<int> g[MAXN],w,line[MAXN];
int sp[MAXN],tim;
vector<int> path;
int used2[MAXN],tim2,pos[MAXN],to[MAXN];
bool dali;

void dfs(int x,int p){
	path.push_back(x);

	for(int i=0;i<line[x].size();i++){
		if(line[x][i]==p)continue;
		dfs(line[x][i],x);
	}
}

bool ok(int x){
	w.clear(); tim++; e=0;

	for(int i=0;i<g[x].size();i++){
		w.push_back(g[x][i]);
		sp[w.back()]=tim;

		line[w.back()].clear();
	}

	for(int i=0;i<w.size();i++){
		for(int f:g[w[i]]){
			if(sp[f]==tim and f>w[i]){
				e++;

				line[w[i]].push_back(f);
				line[f].push_back(w[i]);
			}
		}
	}

	if(e!=w.size()-1)return false;
	
	cnt=0;
	for(int i=0;i<w.size();i++){
		if(line[w[i]].size()!=1 and line[w[i]].size()!=2)return false;
		if(line[w[i]].size()==1){
			cnt++; root=w[i];
		}
	}

	if(cnt!=2)return false;
	path.clear(); dfs(root,0);

	for(int i=0;i<path.size();i++){
		pos[path[i]]=i;
	}

	tim2++; dali=true;
	for(int f=0;f<v;f++){
		if(f==x or sp[f]==tim)continue;

		curr=0;
		for(int k:g[f]){
			if(sp[k]!=tim)continue;
			curr+=(1<<pos[k]);
		}
		to[f]=curr;

		if(used2[curr]==tim2 or curr<17 or curr>=v-12+17){dali=false;break;}
		used2[curr]=tim2;
	}

	if(dali)return true;

	reverse(path.begin(),path.end());

	for(int i=0;i<path.size();i++){
		pos[path[i]]=i;
	}

	tim2++; dali=true;
	for(int f=0;f<v;f++){
		if(f==x or sp[f]==tim)continue;

		curr=0;
		for(int k:g[f]){
			if(sp[k]!=tim)continue;
			curr+=(1<<pos[k]);
		}
		to[f]=curr;

		if(used2[curr]==tim2 or curr<17 or curr>=v-12+17){dali=false;break;}
		used2[curr]=tim2;
	}

	if(dali)return true;

	return false;
}

void Bob( int V, int U, int C[], int D[] ){

	v=V; u=U;
	for(int i=0;i<u;i++){
		g[C[i]].push_back(D[i]);
		g[D[i]].push_back(C[i]);
	}

	for(int i=0;i<v;i++){
		if(g[i].size()==11 and ok(i)){
			e=0;
			for(int f=0;f<u;f++){
				if(sp[C[f]]==tim or sp[D[f]]==tim)continue;
				e++;
			}
			InitMap(V-12,e);

			for(int f=0;f<u;f++){
				if(sp[C[f]]==tim or sp[D[f]]==tim)continue;
				MakeMap(to[C[f]]-17,to[D[f]]-17);
			}
			return;
		}
	}

}

Compilation message

Alice.cpp: In function 'void Alice(int, int, int*, int*)':
Alice.cpp:33:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   33 |  for(int i=0;i<edges.size();i++){
      |              ~^~~~~~~~~~~~~

Bob.cpp: In function 'void dfs(int, int)':
Bob.cpp:17:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   17 |  for(int i=0;i<line[x].size();i++){
      |              ~^~~~~~~~~~~~~~~
Bob.cpp: In function 'bool ok(int)':
Bob.cpp:26:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   26 |  for(int i=0;i<g[x].size();i++){
      |              ~^~~~~~~~~~~~
Bob.cpp:33:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   33 |  for(int i=0;i<w.size();i++){
      |              ~^~~~~~~~~
Bob.cpp:44:6: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   44 |  if(e!=w.size()-1)return false;
      |     ~^~~~~~~~~~~~
Bob.cpp:47:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   47 |  for(int i=0;i<w.size();i++){
      |              ~^~~~~~~~~
Bob.cpp:57:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   57 |  for(int i=0;i<path.size();i++){
      |              ~^~~~~~~~~~~~
Bob.cpp:80:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   80 |  for(int i=0;i<path.size();i++){
      |              ~^~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 3 ms 15616 KB Output is correct
2 Correct 3 ms 15620 KB Output is correct
3 Correct 3 ms 15620 KB Output is correct
4 Correct 2 ms 13572 KB Output is correct
5 Correct 3 ms 16120 KB Output is correct
6 Correct 3 ms 15616 KB Output is correct
7 Correct 3 ms 15620 KB Output is correct
8 Correct 3 ms 15620 KB Output is correct
9 Correct 3 ms 15840 KB Output is correct
10 Correct 2 ms 13568 KB Output is correct
11 Correct 3 ms 15620 KB Output is correct
12 Correct 3 ms 15620 KB Output is correct
13 Correct 3 ms 15616 KB Output is correct
14 Correct 3 ms 15620 KB Output is correct
15 Correct 3 ms 15620 KB Output is correct
16 Correct 3 ms 15460 KB Output is correct
17 Correct 3 ms 15620 KB Output is correct
18 Correct 3 ms 15620 KB Output is correct
19 Correct 3 ms 15580 KB Output is correct
20 Correct 3 ms 15620 KB Output is correct
21 Correct 3 ms 15616 KB Output is correct
22 Correct 3 ms 15620 KB Output is correct
23 Correct 3 ms 15620 KB Output is correct
24 Correct 3 ms 13568 KB Output is correct
25 Incorrect 3 ms 15868 KB Wrong Answer [17]
26 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 3 ms 15616 KB Output is correct
2 Correct 3 ms 15620 KB Output is correct
3 Correct 3 ms 15620 KB Output is correct
4 Correct 2 ms 13572 KB Output is correct
5 Correct 3 ms 16120 KB Output is correct
6 Correct 3 ms 15616 KB Output is correct
7 Correct 3 ms 15620 KB Output is correct
8 Correct 3 ms 15620 KB Output is correct
9 Correct 3 ms 15840 KB Output is correct
10 Correct 2 ms 13568 KB Output is correct
11 Correct 3 ms 15620 KB Output is correct
12 Correct 3 ms 15620 KB Output is correct
13 Correct 3 ms 15616 KB Output is correct
14 Correct 3 ms 15620 KB Output is correct
15 Correct 3 ms 15620 KB Output is correct
16 Correct 3 ms 15460 KB Output is correct
17 Correct 3 ms 15620 KB Output is correct
18 Correct 3 ms 15620 KB Output is correct
19 Correct 3 ms 15580 KB Output is correct
20 Correct 3 ms 15620 KB Output is correct
21 Correct 3 ms 15616 KB Output is correct
22 Correct 3 ms 15620 KB Output is correct
23 Correct 3 ms 15620 KB Output is correct
24 Correct 3 ms 13568 KB Output is correct
25 Incorrect 3 ms 15868 KB Wrong Answer [17]
26 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 439 ms 35312 KB Output is correct : V - N = 12
2 Correct 316 ms 34692 KB Output is correct : V - N = 12
3 Correct 128 ms 20444 KB Output is correct : V - N = 12
4 Correct 7 ms 16128 KB Output is correct : V - N = 12
5 Correct 86 ms 19440 KB Output is correct : V - N = 12
6 Correct 262 ms 32696 KB Output is correct : V - N = 12
7 Correct 449 ms 34988 KB Output is correct : V - N = 12
8 Correct 362 ms 33940 KB Output is correct : V - N = 12
9 Correct 196 ms 21464 KB Output is correct : V - N = 12
10 Correct 24 ms 16712 KB Output is correct : V - N = 12
11 Correct 40 ms 17896 KB Output is correct : V - N = 12
12 Correct 216 ms 26844 KB Output is correct : V - N = 12
13 Correct 355 ms 34608 KB Output is correct : V - N = 12
14 Correct 398 ms 34832 KB Output is correct : V - N = 12
15 Correct 261 ms 28340 KB Output is correct : V - N = 12
16 Correct 51 ms 18096 KB Output is correct : V - N = 12
17 Correct 14 ms 16884 KB Output is correct : V - N = 12
18 Correct 157 ms 20744 KB Output is correct : V - N = 12
19 Correct 328 ms 33492 KB Output is correct : V - N = 12
20 Correct 469 ms 35424 KB Output is correct : V - N = 12
21 Correct 110 ms 19676 KB Output is correct : V - N = 12
22 Correct 74 ms 18228 KB Output is correct : V - N = 12
23 Correct 30 ms 17044 KB Output is correct : V - N = 12
24 Correct 5 ms 15620 KB Output is correct : V - N = 12
25 Correct 18 ms 16684 KB Output is correct : V - N = 12
26 Correct 72 ms 17948 KB Output is correct : V - N = 12
27 Correct 117 ms 18408 KB Output is correct : V - N = 12
28 Correct 82 ms 18264 KB Output is correct : V - N = 12
29 Correct 47 ms 17308 KB Output is correct : V - N = 12
30 Correct 6 ms 15960 KB Output is correct : V - N = 12
31 Correct 5 ms 13824 KB Output is correct : V - N = 12
32 Correct 5 ms 13776 KB Output is correct : V - N = 12
33 Correct 6 ms 13828 KB Output is correct : V - N = 12
34 Correct 5 ms 13572 KB Output is correct : V - N = 12
35 Correct 6 ms 13792 KB Output is correct : V - N = 12
36 Correct 444 ms 34624 KB Output is correct : V - N = 12
37 Correct 495 ms 35036 KB Output is correct : V - N = 12
38 Correct 429 ms 34752 KB Output is correct : V - N = 12
39 Correct 397 ms 35084 KB Output is correct : V - N = 12
40 Correct 419 ms 35032 KB Output is correct : V - N = 12
41 Correct 96 ms 18576 KB Output is correct : V - N = 12
42 Correct 62 ms 17496 KB Output is correct : V - N = 12
43 Correct 71 ms 17988 KB Output is correct : V - N = 12
44 Correct 6 ms 15876 KB Output is correct : V - N = 12
45 Correct 32 ms 17204 KB Output is correct : V - N = 12
46 Correct 131 ms 19972 KB Output is correct : V - N = 12
47 Correct 79 ms 18656 KB Output is correct : V - N = 12
48 Correct 178 ms 20700 KB Output is correct : V - N = 12
49 Correct 33 ms 17736 KB Output is correct : V - N = 12
50 Correct 11 ms 16644 KB Output is correct : V - N = 12
51 Correct 311 ms 34656 KB Output is correct : V - N = 12
52 Correct 8 ms 16072 KB Output is correct : V - N = 12
53 Correct 291 ms 33384 KB Output is correct : V - N = 12
54 Correct 323 ms 33660 KB Output is correct : V - N = 12
55 Correct 20 ms 16928 KB Output is correct : V - N = 12
56 Correct 223 ms 26296 KB Output is correct : V - N = 12
57 Correct 450 ms 34548 KB Output is correct : V - N = 12
58 Correct 64 ms 18052 KB Output is correct : V - N = 12
59 Correct 145 ms 19992 KB Output is correct : V - N = 12
60 Correct 414 ms 34240 KB Output is correct : V - N = 12
61 Correct 3 ms 15616 KB Output is correct : V - N = 12
62 Correct 3 ms 15620 KB Output is correct : V - N = 12
63 Correct 3 ms 15620 KB Output is correct : V - N = 12
64 Correct 2 ms 16124 KB Output is correct : V - N = 12
65 Correct 3 ms 15612 KB Output is correct : V - N = 12
66 Correct 3 ms 15620 KB Output is correct : V - N = 12
67 Correct 3 ms 15620 KB Output is correct : V - N = 12
68 Correct 3 ms 15616 KB Output is correct : V - N = 12
69 Correct 3 ms 15620 KB Output is correct : V - N = 12
70 Correct 3 ms 15620 KB Output is correct : V - N = 12
71 Correct 3 ms 15500 KB Output is correct : V - N = 12
72 Correct 3 ms 15620 KB Output is correct : V - N = 12
73 Correct 3 ms 15620 KB Output is correct : V - N = 12
74 Correct 3 ms 15612 KB Output is correct : V - N = 12
75 Correct 3 ms 15620 KB Output is correct : V - N = 12
76 Correct 3 ms 15620 KB Output is correct : V - N = 12
77 Correct 3 ms 15620 KB Output is correct : V - N = 12
78 Correct 3 ms 15620 KB Output is correct : V - N = 12
79 Correct 3 ms 15620 KB Output is correct : V - N = 12
80 Correct 3 ms 15616 KB Output is correct : V - N = 12
81 Correct 3 ms 15616 KB Output is correct : V - N = 12
82 Correct 3 ms 15620 KB Output is correct : V - N = 12
83 Correct 3 ms 15620 KB Output is correct : V - N = 12
84 Correct 3 ms 15620 KB Output is correct : V - N = 12
85 Correct 3 ms 15620 KB Output is correct : V - N = 12
86 Correct 3 ms 15620 KB Output is correct : V - N = 12
87 Correct 3 ms 15620 KB Output is correct : V - N = 12
88 Correct 3 ms 15620 KB Output is correct : V - N = 12
89 Correct 3 ms 15616 KB Output is correct : V - N = 12
90 Correct 3 ms 15620 KB Output is correct : V - N = 12
91 Correct 2 ms 13568 KB Output is correct : V - N = 12
92 Correct 2 ms 13572 KB Output is correct : V - N = 12
93 Correct 2 ms 13572 KB Output is correct : V - N = 12
94 Correct 2 ms 13572 KB Output is correct : V - N = 12
95 Correct 2 ms 13572 KB Output is correct : V - N = 12
96 Correct 3 ms 15620 KB Output is correct : V - N = 12
97 Correct 3 ms 15620 KB Output is correct : V - N = 12
98 Correct 3 ms 15616 KB Output is correct : V - N = 12
99 Correct 3 ms 15616 KB Output is correct : V - N = 12
100 Correct 3 ms 15612 KB Output is correct : V - N = 12
101 Correct 3 ms 15624 KB Output is correct : V - N = 12
102 Correct 3 ms 15620 KB Output is correct : V - N = 12
103 Incorrect 3 ms 15620 KB Wrong Answer [17]
104 Halted 0 ms 0 KB -