답안 #394720

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
394720 2021-04-27T08:27:11 Z suren 자매 도시 (APIO20_swap) C++14
컴파일 오류
0 ms 0 KB
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define mk make_pair
int n, m;
vector < int > u, v, w;
vector < int > vc[10045];
void init(int N, int M,
          std::vector<int> U, std::vector<int> V, std::vector<int> W) {
		u = U;
		v = V;
		w = W;
}
bool vis[10045];
int getMinimumFuelCapacity(int X, int Y) {
	int flag = true, i;
	map < pair < int , int >, int > mp;
	for( i = 0; i < m; i ++ ){
		vc[ u[i] ].pb( v[i] );
		vc[ v[i] ].pb( u[i] );
		mp[ mk( u[i], v[i] ) ] = w[i];
		mp[ mk( v[i], u[i] ) ] = w[i];
	}
	for(;;);
	for( i = 0; i < n; i ++ ){
		if( vc[i].size() != 2 ){
			flag = false;
			break;
		}
	}
	if( flag == true ){
		vis[X] = 1;
		int p = vc[X][0];
		int ans = mp[ mk(X,p) ];
		while( p != Y ){
			vis[ p ] = 1;
			if( vc[p][0] == 0 ){
				ans = max( ans, mp[ mk( p, vc[p][0] ) ] );
				p = vc[p][0];
			}
			else{
				ans = max( ans, mp[ mk( p, vc[p][1] ) ] );
				p = vc[p][1];
			}
		}
		p = vc[X][1];
		int ans1 = mp[ mk(X,p) ];
		while( p != Y ){
			vis[ p ] = 1;
			if( vc[p][0] == 0 ){
				ans1 = max( ans, mp[ mk( p, vc[p][0] ) ] );
				p = vc[p][0];
			}
			else{
				ans1 = max( ans, mp[ mk( p, vc[p][1] ) ] );
				p = vc[p][1];
			}
		}
		return min( ans, ans1 );
	}
	flag = true;
	int ans = 0;
	for( i = 0; i < n; i ++ ){
		
		if( vc[i].size() >= 3 ){
			flag = false;
			break;
		}
		
	}
	if( flag == true ){
		for( i = 0; i < m; i ++ )
			ans = max( ans, w[i] );
		return ans;
	}
	
	return 0;
}
int main() {
  int N, M;
  assert(2 == scanf("%d %d", &N, &M));
  
  std::vector<int> U(M), V(M), W(M);
  for (int i = 0; i < M; ++i) {
    assert(3 == scanf("%d %d %d", &U[i], &V[i], &W[i]));
  }

  int Q;
  assert(1 == scanf("%d", &Q));

  std::vector<int> X(Q), Y(Q);
  for (int i = 0; i < Q; ++i) {
    assert(2 == scanf("%d %d", &X[i], &Y[i]));
  }

  init(N, M, U, V, W);
  
  std::vector<int> minimum_fuel_capacities(Q);
  for (int i = 0; i < Q; ++i) {
    minimum_fuel_capacities[i] = getMinimumFuelCapacity(X[i], Y[i]);
  }

  for (int i = 0; i < Q; ++i) {
    printf("%d\n", minimum_fuel_capacities[i]);
  }
  
  return 0;
}

Compilation message

/tmp/ccNpCFUo.o: In function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'
/tmp/ccArhbRN.o:swap.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status