Submission #933920

# Submission time Handle Problem Language Result Execution time Memory
933920 2024-02-26T15:03:26 Z alexander707070 Airline Route Map (JOI18_airline) C++14
0 / 100
608 ms 54924 KB
#include<bits/stdc++.h>
#include "Alicelib.h"
#define MAXN 200007

using namespace std;

namespace{
	int n,m,num;
	vector< pair<int,int> > edges;
}

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

	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 200007

using namespace std;

namespace{
	int v,u,e,cnt,root,curr;
	vector<int> g[MAXN],w,line[MAXN];
	int sp[MAXN],tim;
	vector<int> path;
	vector< pair<int,int> > ed;
	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; ed.clear();

			for(int f=0;f<u;f++){
				if(sp[C[f]]==tim or sp[D[f]]==tim)continue;
				ed.push_back({to[C[f]]-17,to[D[f]]-17});
				e++;
			}
			InitMap(V-12,e);

			for(int f=0;f<ed.size();f++){
				MakeMap(ed[f].first,ed[f].second);
			}

			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 {anonymous}::dfs(int, int)':
Bob.cpp:19:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   19 |   for(int i=0;i<line[x].size();i++){
      |               ~^~~~~~~~~~~~~~~
Bob.cpp: In function 'bool {anonymous}::ok(int)':
Bob.cpp:28:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   28 |   for(int i=0;i<g[x].size();i++){
      |               ~^~~~~~~~~~~~
Bob.cpp:35:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   35 |   for(int i=0;i<w.size();i++){
      |               ~^~~~~~~~~
Bob.cpp:46:7: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   46 |   if(e!=w.size()-1)return false;
      |      ~^~~~~~~~~~~~
Bob.cpp:49:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   49 |   for(int i=0;i<w.size();i++){
      |               ~^~~~~~~~~
Bob.cpp:59:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   59 |   for(int i=0;i<path.size();i++){
      |               ~^~~~~~~~~~~~
Bob.cpp:82:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   82 |   for(int i=0;i<path.size();i++){
      |               ~^~~~~~~~~~~~
Bob.cpp: In function 'void Bob(int, int, int*, int*)':
Bob.cpp:126:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  126 |    for(int f=0;f<ed.size();f++){
      |                ~^~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 6 ms 29444 KB Output is correct
2 Correct 6 ms 29444 KB Output is correct
3 Correct 6 ms 29444 KB Output is correct
4 Correct 6 ms 27396 KB Output is correct
5 Correct 6 ms 29440 KB Output is correct
6 Correct 6 ms 29440 KB Output is correct
7 Correct 6 ms 29444 KB Output is correct
8 Correct 6 ms 29444 KB Output is correct
9 Correct 6 ms 29444 KB Output is correct
10 Correct 5 ms 27392 KB Output is correct
11 Correct 6 ms 29444 KB Output is correct
12 Correct 6 ms 29444 KB Output is correct
13 Correct 6 ms 29444 KB Output is correct
14 Correct 7 ms 29600 KB Output is correct
15 Correct 6 ms 29524 KB Output is correct
16 Correct 7 ms 29280 KB Output is correct
17 Correct 6 ms 29444 KB Output is correct
18 Correct 6 ms 29444 KB Output is correct
19 Correct 6 ms 29444 KB Output is correct
20 Incorrect 6 ms 29444 KB Wrong Answer [17]
21 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 6 ms 29444 KB Output is correct
2 Correct 6 ms 29444 KB Output is correct
3 Correct 6 ms 29444 KB Output is correct
4 Correct 6 ms 27396 KB Output is correct
5 Correct 6 ms 29440 KB Output is correct
6 Correct 6 ms 29440 KB Output is correct
7 Correct 6 ms 29444 KB Output is correct
8 Correct 6 ms 29444 KB Output is correct
9 Correct 6 ms 29444 KB Output is correct
10 Correct 5 ms 27392 KB Output is correct
11 Correct 6 ms 29444 KB Output is correct
12 Correct 6 ms 29444 KB Output is correct
13 Correct 6 ms 29444 KB Output is correct
14 Correct 7 ms 29600 KB Output is correct
15 Correct 6 ms 29524 KB Output is correct
16 Correct 7 ms 29280 KB Output is correct
17 Correct 6 ms 29444 KB Output is correct
18 Correct 6 ms 29444 KB Output is correct
19 Correct 6 ms 29444 KB Output is correct
20 Incorrect 6 ms 29444 KB Wrong Answer [17]
21 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 458 ms 52920 KB Output is correct : V - N = 12
2 Correct 313 ms 51556 KB Output is correct : V - N = 12
3 Correct 134 ms 35740 KB Output is correct : V - N = 12
4 Correct 11 ms 29676 KB Output is correct : V - N = 12
5 Correct 74 ms 33424 KB Output is correct : V - N = 12
6 Correct 300 ms 51992 KB Output is correct : V - N = 12
7 Correct 384 ms 53100 KB Output is correct : V - N = 12
8 Correct 386 ms 52360 KB Output is correct : V - N = 12
9 Correct 173 ms 36560 KB Output is correct : V - N = 12
10 Correct 24 ms 31004 KB Output is correct : V - N = 12
11 Correct 40 ms 31700 KB Output is correct : V - N = 12
12 Correct 199 ms 42748 KB Output is correct : V - N = 12
13 Correct 397 ms 52204 KB Output is correct : V - N = 12
14 Correct 398 ms 53436 KB Output is correct : V - N = 12
15 Correct 230 ms 48016 KB Output is correct : V - N = 12
16 Correct 58 ms 32868 KB Output is correct : V - N = 12
17 Correct 15 ms 30556 KB Output is correct : V - N = 12
18 Correct 143 ms 36312 KB Output is correct : V - N = 12
19 Correct 383 ms 54120 KB Output is correct : V - N = 12
20 Correct 477 ms 53320 KB Output is correct : V - N = 12
21 Correct 107 ms 34316 KB Output is correct : V - N = 12
22 Correct 87 ms 32924 KB Output is correct : V - N = 12
23 Correct 34 ms 31596 KB Output is correct : V - N = 12
24 Correct 7 ms 29440 KB Output is correct : V - N = 12
25 Correct 27 ms 31012 KB Output is correct : V - N = 12
26 Correct 81 ms 33184 KB Output is correct : V - N = 12
27 Correct 121 ms 33656 KB Output is correct : V - N = 12
28 Correct 90 ms 33092 KB Output is correct : V - N = 12
29 Correct 60 ms 32020 KB Output is correct : V - N = 12
30 Correct 9 ms 29980 KB Output is correct : V - N = 12
31 Correct 9 ms 27400 KB Output is correct : V - N = 12
32 Correct 9 ms 27396 KB Output is correct : V - N = 12
33 Correct 8 ms 27396 KB Output is correct : V - N = 12
34 Correct 10 ms 27396 KB Output is correct : V - N = 12
35 Correct 8 ms 27396 KB Output is correct : V - N = 12
36 Correct 459 ms 53860 KB Output is correct : V - N = 12
37 Correct 431 ms 53160 KB Output is correct : V - N = 12
38 Correct 608 ms 53160 KB Output is correct : V - N = 12
39 Correct 471 ms 52792 KB Output is correct : V - N = 12
40 Correct 403 ms 54924 KB Output is correct : V - N = 12
41 Correct 71 ms 33024 KB Output is correct : V - N = 12
42 Correct 59 ms 32480 KB Output is correct : V - N = 12
43 Correct 83 ms 32840 KB Output is correct : V - N = 12
44 Correct 10 ms 29700 KB Output is correct : V - N = 12
45 Correct 41 ms 31652 KB Output is correct : V - N = 12
46 Correct 117 ms 36204 KB Output is correct : V - N = 12
47 Correct 86 ms 32796 KB Output is correct : V - N = 12
48 Correct 195 ms 37232 KB Output is correct : V - N = 12
49 Correct 38 ms 31644 KB Output is correct : V - N = 12
50 Correct 15 ms 30824 KB Output is correct : V - N = 12
51 Correct 311 ms 53300 KB Output is correct : V - N = 12
52 Correct 10 ms 29696 KB Output is correct : V - N = 12
53 Correct 282 ms 50944 KB Output is correct : V - N = 12
54 Correct 373 ms 53848 KB Output is correct : V - N = 12
55 Correct 25 ms 31432 KB Output is correct : V - N = 12
56 Correct 198 ms 42148 KB Output is correct : V - N = 12
57 Correct 416 ms 53892 KB Output is correct : V - N = 12
58 Correct 75 ms 31888 KB Output is correct : V - N = 12
59 Correct 168 ms 36000 KB Output is correct : V - N = 12
60 Correct 453 ms 54096 KB Output is correct : V - N = 12
61 Correct 6 ms 29440 KB Output is correct : V - N = 12
62 Correct 7 ms 29440 KB Output is correct : V - N = 12
63 Correct 6 ms 29444 KB Output is correct : V - N = 12
64 Correct 6 ms 29436 KB Output is correct : V - N = 12
65 Correct 6 ms 29444 KB Output is correct : V - N = 12
66 Correct 7 ms 29444 KB Output is correct : V - N = 12
67 Correct 6 ms 29440 KB Output is correct : V - N = 12
68 Correct 7 ms 29444 KB Output is correct : V - N = 12
69 Correct 6 ms 29444 KB Output is correct : V - N = 12
70 Correct 6 ms 29440 KB Output is correct : V - N = 12
71 Correct 6 ms 29444 KB Output is correct : V - N = 12
72 Correct 6 ms 29444 KB Output is correct : V - N = 12
73 Correct 6 ms 29444 KB Output is correct : V - N = 12
74 Correct 6 ms 29444 KB Output is correct : V - N = 12
75 Correct 6 ms 29444 KB Output is correct : V - N = 12
76 Correct 6 ms 29444 KB Output is correct : V - N = 12
77 Correct 6 ms 29444 KB Output is correct : V - N = 12
78 Correct 6 ms 29444 KB Output is correct : V - N = 12
79 Correct 6 ms 29444 KB Output is correct : V - N = 12
80 Correct 6 ms 29440 KB Output is correct : V - N = 12
81 Correct 6 ms 29444 KB Output is correct : V - N = 12
82 Correct 8 ms 29444 KB Output is correct : V - N = 12
83 Correct 6 ms 29444 KB Output is correct : V - N = 12
84 Correct 6 ms 29444 KB Output is correct : V - N = 12
85 Correct 6 ms 29444 KB Output is correct : V - N = 12
86 Correct 6 ms 29444 KB Output is correct : V - N = 12
87 Correct 6 ms 29444 KB Output is correct : V - N = 12
88 Correct 6 ms 29352 KB Output is correct : V - N = 12
89 Correct 6 ms 29444 KB Output is correct : V - N = 12
90 Correct 7 ms 29444 KB Output is correct : V - N = 12
91 Correct 5 ms 27396 KB Output is correct : V - N = 12
92 Correct 5 ms 27396 KB Output is correct : V - N = 12
93 Correct 6 ms 27388 KB Output is correct : V - N = 12
94 Correct 5 ms 27396 KB Output is correct : V - N = 12
95 Correct 6 ms 27396 KB Output is correct : V - N = 12
96 Correct 6 ms 29440 KB Output is correct : V - N = 12
97 Correct 6 ms 29444 KB Output is correct : V - N = 12
98 Correct 6 ms 29444 KB Output is correct : V - N = 12
99 Correct 6 ms 29444 KB Output is correct : V - N = 12
100 Correct 7 ms 29444 KB Output is correct : V - N = 12
101 Correct 7 ms 29444 KB Output is correct : V - N = 12
102 Correct 6 ms 29444 KB Output is correct : V - N = 12
103 Correct 6 ms 29440 KB Output is correct : V - N = 12
104 Correct 6 ms 27396 KB Output is correct : V - N = 12
105 Correct 5 ms 29444 KB Output is correct : V - N = 12
106 Correct 6 ms 29444 KB Output is correct : V - N = 12
107 Correct 6 ms 29444 KB Output is correct : V - N = 12
108 Correct 6 ms 29444 KB Output is correct : V - N = 12
109 Correct 6 ms 29444 KB Output is correct : V - N = 12
110 Correct 6 ms 29496 KB Output is correct : V - N = 12
111 Correct 7 ms 29436 KB Output is correct : V - N = 12
112 Correct 6 ms 29444 KB Output is correct : V - N = 12
113 Correct 6 ms 29444 KB Output is correct : V - N = 12
114 Correct 5 ms 29444 KB Output is correct : V - N = 12
115 Correct 6 ms 29444 KB Output is correct : V - N = 12
116 Correct 6 ms 29436 KB Output is correct : V - N = 12
117 Correct 7 ms 29444 KB Output is correct : V - N = 12
118 Correct 7 ms 29444 KB Output is correct : V - N = 12
119 Correct 7 ms 29472 KB Output is correct : V - N = 12
120 Correct 7 ms 29436 KB Output is correct : V - N = 12
121 Correct 6 ms 29444 KB Output is correct : V - N = 12
122 Correct 6 ms 29444 KB Output is correct : V - N = 12
123 Correct 5 ms 29444 KB Output is correct : V - N = 12
124 Correct 5 ms 27392 KB Output is correct : V - N = 12
125 Correct 6 ms 29440 KB Output is correct : V - N = 12
126 Correct 6 ms 29352 KB Output is correct : V - N = 12
127 Correct 6 ms 29444 KB Output is correct : V - N = 12
128 Correct 5 ms 29444 KB Output is correct : V - N = 12
129 Correct 6 ms 29444 KB Output is correct : V - N = 12
130 Correct 7 ms 27400 KB Output is correct : V - N = 12
131 Correct 6 ms 29444 KB Output is correct : V - N = 12
132 Correct 6 ms 29444 KB Output is correct : V - N = 12
133 Correct 7 ms 29444 KB Output is correct : V - N = 12
134 Correct 6 ms 29444 KB Output is correct : V - N = 12
135 Correct 7 ms 29440 KB Output is correct : V - N = 12
136 Correct 6 ms 29440 KB Output is correct : V - N = 12
137 Correct 7 ms 29360 KB Output is correct : V - N = 12
138 Correct 7 ms 29592 KB Output is correct : V - N = 12
139 Correct 6 ms 29696 KB Output is correct : V - N = 12
140 Correct 6 ms 29456 KB Output is correct : V - N = 12
141 Correct 7 ms 29348 KB Output is correct : V - N = 12
142 Correct 6 ms 29444 KB Output is correct : V - N = 12
143 Correct 7 ms 29444 KB Output is correct : V - N = 12
144 Correct 5 ms 27900 KB Output is correct : V - N = 12
145 Correct 6 ms 29436 KB Output is correct : V - N = 12
146 Correct 7 ms 29444 KB Output is correct : V - N = 12
147 Correct 6 ms 29444 KB Output is correct : V - N = 12
148 Correct 7 ms 29528 KB Output is correct : V - N = 12
149 Incorrect 6 ms 29440 KB Wrong Answer [17]
150 Halted 0 ms 0 KB -