답안 #140874

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
140874 2019-08-06T00:15:06 Z cfalas 꿈 (IOI13_dreaming) C++14
0 / 100
1000 ms 10744 KB
#include<bits/stdc++.h>
using namespace std;
#define F first
#define S second
#include "dreaming.h"

typedef pair<int, int> ii;
typedef vector<ii> vii;
vector<vii> adj;
int longest[1000000];
int ans=0;
int minm;
int maxans=0;
vector<bool> vis;
// O(N)
bool dfs(int s, int pre=-1){
	vis[s] = true;
	minm = min(minm, longest[s]);
	maxans = max(ans, maxans);
	for(int i=0;i<adj[s].size();i++){
		if(adj[s][i].F!=pre){
			ans+=adj[s][i].S;
			dfs(adj[s][i].F, s);
			ans-=adj[s][i].S;
		}
	}
}

int travelTime(int n, int m, int L, int A[], int B[], int T[]) {
	adj.assign(n+1, vii());
	vis.assign(n+1, false);
	// O(N)
	for(int i=0;i<m;i++){
		adj[A[i]].push_back(ii(B[i], T[i]));
		adj[B[i]].push_back(ii(A[i], T[i]));
	}
	int maxlong = 0;
	// O(N^2)
	for(int i=0;i<n;i++){
		vis.assign(n+1, false);
		maxans = 0;
		ans = 0;
		dfs(i);
		longest[i] = maxans;
		//cout<<longest[i]<<" ";
		maxlong = max(maxans, maxlong);
	}
	if(n==m+1) return maxlong;
	// O(N)
	vis.assign(n+1, false);
	ans = 0;
	//cout<<endl;
	int max1=0, max2=0;
	int max3=0;
	// O(N^2)
	for(int i=0;i<n;i++){
		if(!vis[i]){
			minm = 1000000;
			dfs(i);
			//cout<<minm<<" ";
			if(minm>max1) max3=max2, max2=max1, max1=minm;
			else if(minm>max2) max3=max2, max2=minm;
			else if(minm>max3) max3=minm;
		}
	}
	return max(max1+max2+L, max(maxlong, max2+max3+2*L));
}

Compilation message

dreaming.cpp: In function 'bool dfs(int, int)':
dreaming.cpp:20:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i=0;i<adj[s].size();i++){
              ~^~~~~~~~~~~~~~
dreaming.cpp:27:1: warning: no return statement in function returning non-void [-Wreturn-type]
 }
 ^
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1074 ms 10744 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1074 ms 10744 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1074 ms 10744 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 112 ms 5228 KB Output is correct
2 Correct 109 ms 5308 KB Output is correct
3 Correct 112 ms 5624 KB Output is correct
4 Correct 103 ms 5752 KB Output is correct
5 Correct 103 ms 5576 KB Output is correct
6 Correct 111 ms 6008 KB Output is correct
7 Correct 115 ms 5948 KB Output is correct
8 Correct 97 ms 5752 KB Output is correct
9 Correct 107 ms 5608 KB Output is correct
10 Correct 124 ms 5880 KB Output is correct
11 Correct 2 ms 376 KB Output is correct
12 Correct 77 ms 3116 KB Output is correct
13 Correct 78 ms 3192 KB Output is correct
14 Correct 100 ms 3152 KB Output is correct
15 Correct 78 ms 3192 KB Output is correct
16 Correct 77 ms 3064 KB Output is correct
17 Correct 77 ms 3112 KB Output is correct
18 Correct 80 ms 3192 KB Output is correct
19 Correct 77 ms 3192 KB Output is correct
20 Correct 2 ms 380 KB Output is correct
21 Incorrect 2 ms 376 KB Output isn't correct
22 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1074 ms 10744 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1074 ms 10744 KB Time limit exceeded
2 Halted 0 ms 0 KB -