답안 #313396

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
313396 2020-10-15T23:48:00 Z arthur_nascimento 항공 노선도 (JOI18_airline) C++14
0 / 100
2500 ms 81004 KB
#include "Alicelib.h"

#include <cassert>

#include <cstdio>

#include <bits/stdc++.h>

#define maxn 110

#define maxK 4100

#define ll long long

#define pb push_back

#define pii pair<int,int>

#define mod 1000000007 

#define debug(args...) //fprintf(stderr,args)

using namespace std;


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


	vector<pii> v;

	for(int i=0;i<M;i++)
		v.pb({A[i],B[i]});

	for(int i=0;i<10;i++)
		for(int j=0;j<N;j++)
			if(j & (1<<i))
				v.pb({i+N,j});

	for(int i=0;i<N+10;i++){
		if(i < N){
			v.pb({10+N,i});
			v.pb({11+N,i});
		}
		else if (i == N);
		else if(i < N + 5)
			v.pb({10+N,i});
		else
			v.pb({11+N,i});
	}

	for(int i=0;i<9;i++)
		v.pb({i+N,i+N+1});


	InitG(N+12,v.size());

	int bla = 0;
	
	for(pii i : v)
		MakeG(bla++, i.first,i.second);
	

}

#include "Boblib.h"

#include <cassert>

#include <cstdio>

#define maxn 1111

#include <bits/stdc++.h>



#define maxK 4100

#define ll long long

#define pb push_back

#define pii pair<int,int>

#define mod 1000000007 

#define debug(args...) fprintf(stderr,args)

using namespace std;

int mrk[maxn];

int dg[maxn];

vector<int> L[maxn];

int real_id[maxn];

int vis[maxn];

void go(int vx,int num,int p=-1){
	//if(vis[vx]) return;
	vis[vx] = 1;
	for(int i : L[vx])
		real_id[i] += num;
	debug("go %d with %d\n",vx,num);
	for(int i : L[vx])
		if(mrk[i] == 1 && i != p)
			go(i,2*num,vx);
}


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

	for(int i=0;i<V;i++) L[i].clear(), mrk[i] = dg[i] = real_id[i] = vis[i] = 0;

	for(int i=0;i<U;i++){
		dg[C[i]]++, dg[D[i]]++;
		L[C[i]].pb(D[i]);
		L[D[i]].pb(C[i]);
	}

	vector<int> id;
	for(int i=0;i<V;i++)
		id.pb(i);
	sort(id.begin(), id.end(), [](int i,int j){
		return dg[i] > dg[j];
	});

	debug("id %d (%d), %d(%d)\n",id[0],dg[id[0]],id[1],dg[id[1]]);

	for(int i : L[id[0]])
		mrk[i]++;
	for(int i : L[id[1]])
		mrk[i]++;

	int ini;
	for(int i=0;i<V;i++) if(mrk[i] == 0 && i != id[0] && i != id[1]) ini = i;

	go(ini,1);

	for(int i=0;i<V;i++)
		debug("mrk[%d] = %d, real_id = %d\n",i,mrk[i],real_id[i]);

	vector<pii> ans	;
	for(int i=0;i<U;i++)
		if(mrk[C[i]] == 2 && mrk[D[i]] == 2){
			debug("add %d %d -> %d %d\n",C[i],D[i],real_id[C[i]], real_id[D[i]]);
			ans.pb({real_id[C[i]], real_id[D[i]]});
		}

	InitMap( V - 12, ans.size() );

	for(pii i : ans)

		MakeMap( i.first, i.second );

}

Compilation message

Bob.cpp: In function 'void Bob(int, int, int*, int*)':
Bob.cpp:76:4: warning: 'ini' may be used uninitialized in this function [-Wmaybe-uninitialized]
   76 |  go(ini,1);
      |  ~~^~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 3040 ms 81004 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 3040 ms 81004 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2144 ms 40296 KB Wrong Answer [11]
2 Halted 0 ms 0 KB -