P1099 RE求调
  • 板块学术版
  • 楼主_Emperorpenguin_
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/10/11 22:12
  • 上次更新2024/10/12 12:15:15
查看原帖
P1099 RE求调
543555
_Emperorpenguin_楼主2024/10/11 22:12
#include <bits/stdc++.h>
#pragma GCC optmize(2)
using namespace std;

int n,S,u,V,c,mxd,now,cnt,ans_=0x3f3f3f3f;
vector<int> e[305],w[305],v,p[90005],r[305];
int d[305][305],t[305],l[305];

void copy(){
	for(int i=0;i<v.size();i++) 
		p[now].push_back(v[i]);
	return;
}

void find(int u,int ed,int f,int s){
	if(u==ed){
		if(s>=mxd){
			mxd=l[++now]=s;
			copy();
		}
		return;
	}
	for(int i=0;i<e[u].size();i++){
		int nxt=e[u][i];
		if(nxt==f) continue;
		v.push_back(nxt);
		find(nxt,ed,u,s+w[u][i]);
		v.pop_back();
	}
	return;
}

void copy_(int x){
	cnt++;
	for(int i=0;i<p[x].size();i++) 
		r[cnt].push_back(p[x][i]);
	return;
}

void D(int u,int st,int ed,int f,int s){
	if(u==ed){
		d[st][ed]=d[ed][st]=s;
		return;
	}
	for(int i=0;i<e[u].size();i++){
		int nxt=e[u][i];
		if(nxt==f) continue;
		D(nxt,st,ed,u,s+w[u][i]);
	}
	return;
}

signed main(){
//	freopen("P1099_9.in","r",stdin);
//	freopen(".out","w",stdout);
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);

	cin>>n>>S;
	for(int i=1;i<n;i++){
		cin>>u>>V>>c;
		e[u].push_back(V);
		e[V].push_back(u);
		w[u].push_back(c);
		w[V].push_back(c);
	}
	for(int i=1;i<=n;i++)
		for(int j=i;j<=n;j++){
			if(i==j) continue;
			v.clear();
			v.push_back(i);
			find(i,j,0,0);
		}
	for(int i=1;i<=now;i++)
		if(l[i]==mxd) copy_(i);
	for(int i=1;i<=n;i++)
		for(int j=i+1;j<=n;j++)
			D(i,i,j,0,0);
/*--------------------------------------------------------------*/
	for(int i=1;i<=cnt;i++){
		for(int l=0;l<r[i].size();l++){
			int st=r[i][l],ECC=0,ans=0x3f3f3f3f;
			for(int k=1;k<=n;k++) t[k]=d[k][st],ECC=max(ECC,t[k]);
			ans=min(ans,ECC);
			for(int ri=l+1;ri<r[i].size();ri++){
				if(d[st][r[i][ri]]>S) break;
				ECC=0;
				for(int k=1;k<=n;k++) t[k]=min(t[k],d[k][r[i][ri]]),ECC=max(ECC,t[k]);
				ans=min(ans,ECC);
			}
			ans_=min(ans_,ans);
		}
	}
	cout<<ans_;
	return 0;
}

input:

300 1
1 2 1
1 3 1
1 4 1
1 5 1
1 6 1
1 7 1
1 8 1
1 9 1
1 10 1
1 11 1
1 12 1
1 13 1
1 14 1
1 15 1
1 16 1
1 17 1
1 18 1
1 19 1
1 20 1
1 21 1
1 22 1
1 23 1
1 24 1
1 25 1
1 26 1
1 27 1
1 28 1
1 29 1
1 30 1
1 31 1
1 32 1
1 33 1
1 34 1
1 35 1
1 36 1
1 37 1
1 38 1
1 39 1
1 40 1
1 41 1
1 42 1
1 43 1
1 44 1
1 45 1
1 46 1
1 47 1
1 48 1
1 49 1
1 50 1
1 51 1
1 52 1
1 53 1
1 54 1
1 55 1
1 56 1
1 57 1
1 58 1
1 59 1
1 60 1
1 61 1
1 62 1
1 63 1
1 64 1
1 65 1
1 66 1
1 67 1
1 68 1
1 69 1
1 70 1
1 71 1
1 72 1
1 73 1
1 74 1
1 75 1
1 76 1
1 77 1
1 78 1
1 79 1
1 80 1
1 81 1
1 82 1
1 83 1
1 84 1
1 85 1
1 86 1
1 87 1
1 88 1
1 89 1
1 90 1
1 91 1
1 92 1
1 93 1
1 94 1
1 95 1
1 96 1
1 97 1
1 98 1
1 99 1
1 100 1
1 101 1
1 102 1
1 103 1
1 104 1
1 105 1
1 106 1
1 107 1
1 108 1
1 109 1
1 110 1
1 111 1
1 112 1
1 113 1
1 114 1
1 115 1
1 116 1
1 117 1
1 118 1
1 119 1
1 120 1
1 121 1
1 122 1
1 123 1
1 124 1
1 125 1
1 126 1
1 127 1
1 128 1
1 129 1
1 130 1
1 131 1
1 132 1
1 133 1
1 134 1
1 135 1
1 136 1
1 137 1
1 138 1
1 139 1
1 140 1
1 141 1
1 142 1
1 143 1
1 144 1
1 145 1
1 146 1
1 147 1
1 148 1
1 149 1
1 150 1
1 151 1
1 152 1
1 153 1
1 154 1
1 155 1
1 156 1
1 157 1
1 158 1
1 159 1
1 160 1
1 161 1
1 162 1
1 163 1
1 164 1
1 165 1
1 166 1
1 167 1
1 168 1
1 169 1
1 170 1
1 171 1
1 172 1
1 173 1
1 174 1
1 175 1
1 176 1
1 177 1
1 178 1
1 179 1
1 180 1
1 181 1
1 182 1
1 183 1
1 184 1
1 185 1
1 186 1
1 187 1
1 188 1
1 189 1
1 190 1
1 191 1
1 192 1
1 193 1
1 194 1
1 195 1
1 196 1
1 197 1
1 198 1
1 199 1
1 200 1
1 201 1
1 202 1
1 203 1
1 204 1
1 205 1
1 206 1
1 207 1
1 208 1
1 209 1
1 210 1
1 211 1
1 212 1
1 213 1
1 214 1
1 215 1
1 216 1
1 217 1
1 218 1
1 219 1
1 220 1
1 221 1
1 222 1
1 223 1
1 224 1
1 225 1
1 226 1
1 227 1
1 228 1
1 229 1
1 230 1
1 231 1
1 232 1
1 233 1
1 234 1
1 235 1
1 236 1
1 237 1
1 238 1
1 239 1
1 240 1
1 241 1
1 242 1
1 243 1
1 244 1
1 245 1
1 246 1
1 247 1
1 248 1
1 249 1
1 250 1
1 251 1
1 252 1
1 253 1
1 254 1
1 255 1
1 256 1
1 257 1
1 258 1
1 259 1
1 260 1
1 261 1
1 262 1
1 263 1
1 264 1
1 265 1
1 266 1
1 267 1
1 268 1
1 269 1
1 270 1
1 271 1
1 272 1
1 273 1
1 274 1
1 275 1
1 276 1
1 277 1
1 278 1
1 279 1
1 280 1
1 281 1
1 282 1
1 283 1
1 284 1
1 285 1
1 286 1
1 287 1
1 288 1
1 289 1
1 290 1
1 291 1
1 292 1
1 293 1
1 294 1
1 295 1
1 296 1
1 297 1
1 298 1
1 299 1
1 300 1
output:
1
2024/10/11 22:12
加载中...