首页 > 其他分享 >P8817 [CSP-S 2022] 假期计划

P8817 [CSP-S 2022] 假期计划

时间:2022-12-19 09:23:02浏览次数:36  
标签:load P8817 return ll st 2022 ans CSP define

#include <iostream>
#include <queue>
#include <cstring>
#include <algorithm>
using namespace std;
#define ll long long
#define pii pair<ll,ll>
#define fir first
#define sec second
#define mp make_pair
const ll N = 4600 , M = 50000 + 123 ;
ll n , m , k , val [ N * 2 ] ;
ll cnt , h [ M * 2 ] , nt [ M << 1 ] , to [ M << 1 ] ;
ll load [ N ] [ N ] ;
void add ( ll x , ll y )
{
	nt [ ++ cnt ] = h [ x ] ;
	h [ x ] = cnt ;
	to [ cnt ] = y ;
}
void link ( int x , int y ) { add ( x , y ) ; add ( y , x ) ; }
void bfs ( ll st ){
	queue < ll > q;
	load [ st ] [ st ] = 0 ;
	q . push ( st ) ;
	while ( ! q . empty () ) {
		ll x = q . front () ; q . pop ();
		if ( load [ st ] [ x ] == k ) continue;
		for ( ll i = h [ x ] ; i ; i = nt [ i ] ) {
			ll y = to [ i ] ;
			if ( load [ st ] [ y ] >= 0 ) continue;
			load [ st ] [ y ] = load [ st ] [ x ] + 1 ;
			q . push ( y ) ;
		}
	}
}
pii a [ N * 2 ] , b [ N * 2 ] , c [ N * 2 ] ;
void update ( ll fm , ll to , ll w ){
	if ( a [ to ] . fir < w ) {
		c [ to ] = b [ to ] ;
		b [ to ] = a [ to ] ;
		a [ to ] = mp ( w , fm ) ;
		return;
	}
	if ( b [ to ] . fir < w ) {
		c [ to ] = b [ to ] ;
		b [ to ] = mp ( w , fm ) ;
		return;
	}
	if ( c [ to ] . fir < w ) {
		c [ to ] = mp ( w , fm ) ;
		return;
	}
}
bool different ( ll aa , ll bb , ll cc , ll dd ) {
	if ( aa == 0 || bb == 0 ) return false;
	ll s [ 4 ] = { aa , bb , cc , dd } ;
	sort ( s , s + 4 ) ;
	if ( s [ 0 ] == s [ 1 ] || s [ 1 ] == s [ 2 ] || s [ 2 ] == s [ 3 ] ) 
		return false;
	return true;
}
ll dist ( ll x , ll y ) {
	ll rhs = -( 1 << 30 ) ;
	if ( different (  a [ x ] . sec , a [ y ] . sec , x , y ) ) 
	rhs = max ( rhs , a [ x ] . fir + a [ y ] . fir ) ;

	if ( different (  a [ x ] . sec , b [ y ] . sec , x , y ) ) 
	rhs = max ( rhs , a [ x ] . fir + b [ y ] . fir ) ;

	if ( different (  a [ x ] . sec , c [ y ] . sec , x , y ) ) 
	rhs = max ( rhs , a [ x ] . fir + c [ y ] . fir ) ;

	if ( different (  b [ x ] . sec , a [ y ] . sec , x , y ) ) 
	rhs = max ( rhs , b [ x ] . fir + a [ y ] . fir ) ;

	if ( different (  b [ x ] . sec , b [ y ] . sec , x , y ) ) 
	rhs = max ( rhs , b [ x ] . fir + b [ y ] . fir ) ;

	if ( different (  b [ x ] . sec , c [ y ] . sec , x , y ) ) 
	rhs = max ( rhs , b [ x ] . fir + c [ y ] . fir ) ;

	if ( different (  c [ x ] . sec , a [ y ] . sec , x , y ) ) 
	rhs = max ( rhs , c [ x ] . fir + a [ y ] . fir ) ;

	if ( different (  c [ x ] . sec , b [ y ] . sec , x , y ) ) 
	rhs = max ( rhs , c [ x ] . fir + b [ y ] . fir ) ;

	if ( different (  c [ x ] . sec , c [ y ] . sec , x , y ) ) 
	rhs = max ( rhs , c [ x ] . fir + c [ y ] . fir ) ;
	return rhs ;
}
void work () {
	for ( ll i = 2 ; i <= n ; i ++ ) {
		for ( ll j = 2 ; j <= n ; j ++ ) {
			if ( i == j ) continue;
			if ( load [ 1 ] [ i ] >= 0 && load [ i ] [ j ] >= 0 )
				update ( i , j , val [ i ] + val [ j ] ) ;
		}
	}
	ll ans = 0 ;
	for ( ll i = 2 ; i <= n ; i ++ ) 
	{
		for ( ll j = i + 1 ; j <= n ; j ++ ) 
		{
			if ( i == j ) continue;
			if ( load [ i ] [ j ] >= 0 )
				ans = max ( ans , dist ( i , j ) ) ;
		}
	}
	printf ( "%lld\n" , ans ) ;
}
int main () {
	memset ( load , -0x3f3f3f3f , sizeof ( load ) ) ;
	cin >> n >> m >> k ;
	k ++ ;
	for ( ll i = 2 ; i <= n ; i ++ ) {
		scanf ( "%lld" , & val [ i ] ) ;
	}
	for ( ll i = 0 ; i < m ; i ++ ) {
		static ll x , y ;
		scanf ( "%lld%lld" , & x , & y ) ; link ( x , y ) ;
	}
	for ( ll i = 1 ; i <= n ; i ++ ) {
		bfs ( i ) ;
	}
	work();
}

标签:load,P8817,return,ll,st,2022,ans,CSP,define
From: https://www.cnblogs.com/dadidididi/p/16991428.html

相关文章

  • 稳中求进的2022年
    2022年年初做了一份年度计划,给自己列了13条今年完成的事情,除了1条完全没有启动之外,其余12条或完成,或还在进行中。给自己还定了5个核心目标,除了个别需要......
  • 记录2022世界杯阿根廷夺冠
    2022年12月19日,在这个2022即将过去的一天,梅西终于带着阿根廷夺得了大力神杯,梅老板的最后一场世界杯也是圆满结束了,五次世界杯,16年的时光,星光不问赶路人,时光不负有心人,终于......
  • day6-2022.12.17-flex布局初识(三)
    一、作业完成如下设计图的布局   二、作业需掌握知识点1、理解模型盒子1.1<imgsrc="../assets/boxModel.png"alt="" 解释:img标签用来引入图......
  • #yyds干货盘点#【愚公系列】2022年09月 微信小程序-WebGL画正方形
    前言WebGL(全写WebGraphicsLibrary)是一种3D绘图协议,这种绘图技术标准允许把JavaScript和OpenGLES2.0结合在一起,通过增加OpenGLES2.0的一个JavaScript绑定,WebGL可以为......
  • Codeforces Polynomial Round 2022 (Div.1 + Div.2) CF 1774 题解
    A.AddPlusMinusSign如果有偶数个1,显然可以通过加减各一半的方式达到和为0;否则可以达到和为1。需要注意如果序列的第一个数是1,则它的前面只能填加号。时间复杂度\(O(n......
  • Codeforces Polynomial Round 2022 (Div.1 + Div.2) CF 1774 题解
    A.AddPlusMinusSign如果有偶数个1,显然可以通过加减各一半的方式达到和为0;否则可以达到和为1。需要注意如果序列的第一个数是1,则它的前面只能填加号。时间复杂度\(O(n......
  • Codeforces Polynomial Round 2022 (Div.1 + Div.2) CF 1774 题解
    A.AddPlusMinusSign如果有偶数个1,显然可以通过加减各一半的方式达到和为0;否则可以达到和为1。需要注意如果序列的第一个数是1,则它的前面只能填加号。时间复杂度\(O(n......
  • Codeforces Polynomial Round 2022 (Div.1 + Div.2) CF 1774 题解
    A.AddPlusMinusSign如果有偶数个1,显然可以通过加减各一半的方式达到和为0;否则可以达到和为1。需要注意如果序列的第一个数是1,则它的前面只能填加号。时间复杂度\(O(n......
  • ICPC2022南京站游记
    第二次打南京了,去年是在南京拿的第一块铜(上海太卷了打了次铁)Day0南京站的热身赛真就万年不变,一直用那套袋鼠题。Day1开局我直接先敲板子,试图跟榜秒杀签到题,不久后\(I\)......
  • [CSP-S 2022] 假期计划 题解
    题面题面冗长,不便展示,详见洛谷。考场想法对于每一个点给他能到达的点都建一条边,最后跑一遍DFS。期望分数:\(60\)。代码朴素想法枚举所有可能的四个点,看是否能“互......