Submission #470138

#TimeUsernameProblemLanguageResultExecution timeMemory
470138dantoh000Airline Route Map (JOI18_airline)C++14
100 / 100
911 ms29500 KiB
#include "Alicelib.h"
#include <cassert>
#include <cstdio>
#include <bits/stdc++.h>

using namespace std;
typedef pair<int,int> ii;
int d2[1025];
void Alice( int N, int M, int A[], int B[] ){
    vector<ii> E;
    for (int i = 0; i < M; i++){
        E.push_back({A[i],B[i]});
    }
    for (int i = 0; i < 10; i++){
        for (int j = 0; j < N; j++){
            if ((j>>(i))&1) E.push_back({j,N+i+1});
        }
        if (i!=9) E.push_back({N+i+1,N+i+2});
        E.push_back({N+i+1, N+11});
    }
    for (int i = 0; i <= N+10; i++){
        if (i != N) E.push_back({i,N});
    }
    for (auto v: E){
        //printf("%d %d\n",v.first,v.second);
    }
	InitG( N+12, E.size() );
	for (int i = 0; i < (int)E.size(); i++){
        MakeG(i, E[i].first, E[i].second);
        d2[E[i].first]++;
        d2[E[i].second]++;
	}
	/*for (int i = 0; i < N+12; i++){
        printf("d of %d = %d\n",i,d2[i]);
	}
	printf("\n");*/
}

#include "Boblib.h"
#include <cassert>
#include <cstdio>
#include <bits/stdc++.h>

using namespace std;
typedef pair<int,int> ii;
int d[1025];
vector<int> G[1025];
int inP[1025];
int Label[1025];
int vis[1025];
void Bob( int V, int U, int C[], int D[] ){
    for (int i = 0; i < U; i++){
        d[C[i]]++;
        d[D[i]]++;
        G[C[i]].push_back(D[i]);
        G[D[i]].push_back(C[i]);
    }
    /*for (int i = 0; i < V; i++){
        printf("%d ",d[i]);
    }
    printf("\n");*/
    int maxd = 0;
    for (int i = 0; i < V; i++){
        if (d[i] > d[maxd]) maxd = i;
    }
    //printf("maxd %d\n",maxd);
    sort(G[maxd].begin(),G[maxd].end());
    vector<int> P;
    int j = 0;
    int missing = -1;
    for (int i = 0; i < V; i++) inP[i] = 0;
    for (int i = 0; i < V; i++){
        if (G[maxd][j] != i){
            if (i != maxd) {
                missing = i;
            }
        }
        else j++;
    }
    //printf("missing %d\n",missing);
    for (auto x : G[missing]){
        if (x != maxd){
            inP[x] = 1;
            P.push_back(x);
        }
    }
    int mindP = P[0];
    for (int i = 0; i < P.size(); i++){
        if (d[P[i]] < d[mindP]) mindP = P[i];
    }
    for (int i = 0; i < V; i++) {Label[i] = 0; vis[i] = -1;}
    int cur = mindP;
    vis[cur] = 1;

    for (int i = 0; i < 10; i++){
        Label[cur] = V-1-i;
        int mask = 1<<(9-i);
        for (auto x : G[cur]){
            Label[x] += mask;
        }
        for (auto x : G[cur]){
            if (vis[x] == -1 && inP[x]){
                vis[x] = 1;
                cur = x;
            }
        }
    }
    inP[maxd] = 1; inP[missing] = 1;
    /*for (int i = 0; i < V; i++){
        if (!inP[i]){
            printf("%d ",Label[i]);
        }
    }
    printf("\n");*/
    vector<ii> E;
    for (int i = 0; i < U; i++){
        if (!inP[C[i]] && !inP[D[i]]){
            E.emplace_back(Label[C[i]],Label[D[i]]);
        }
    }




	InitMap( V-12, (int)E.size() );
	for (auto x : E){
        MakeMap(x.first,x.second);
	}

}

Compilation message (stderr)

Alice.cpp: In function 'void Alice(int, int, int*, int*)':
Alice.cpp:24:15: warning: variable 'v' set but not used [-Wunused-but-set-variable]
   24 |     for (auto v: E){
      |               ^

Bob.cpp: In function 'void Bob(int, int, int*, int*)':
Bob.cpp:50:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   50 |     for (int i = 0; i < P.size(); i++){
      |                     ~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...