社区讨论
TLE75QWQ
P8817[CSP-S 2022] 假期计划参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @lo7myhea
- 此快照首次捕获于
- 2023/10/27 04:27 2 年前
- 此快照最后确认于
- 2023/10/27 04:27 2 年前
CPP
#include <bits/stdc++.h>
#define rep(a,b,c) for(register int a=b;a<=c;++a)
using namespace std;
int n,m,k;
typedef long long ll;
const int N=2e3+550;
int top;
int ver[N<<1],head[N],nxt[N<<1];
inline char gc()
{
static char BB[1000000],*S=BB,*T=BB;
return S==T&&(T=(S=BB)+fread(BB,1,1000000,stdin),S==T)?EOF:*S++;
}
inline ll read()
{
ll x=0,f=1;char ch=gc();
while(ch<'0'||ch>'9')
{
if(ch=='-') f=-1;
ch=gc();
}
while(ch<='9'&&ch>='0')
{
x=x*10+ch-48;
ch=gc();
}
return x*f;
}
inline void add(int u,int v)
{
ver[++top]=v;
nxt[top]=head[u];
head[u]=top;
}
ll a[N];
vector<int> dis[N];
bool vis[N][N];
struct node{
int t,len;
};
ll f[N][4],w[N][4];
queue<node> qu;
inline void cal(int t)
{
qu.push(node{t,0});vis[t][t]=1;
while(!qu.empty())
{
node s=qu.front();qu.pop();
if(s.len>=k) continue;
for(int i=head[s.t];i;i=nxt[i])
{
int to=ver[i];
if(!vis[t][to])
{
vis[t][to]=1;
dis[t].push_back(to);
qu.push(node{to,s.len+1});
}
}
}
}
bool in1[N];
int main()
{
//clock_t start=clock();
//freopen("in.in","r",stdin);
// freopen("holiday3.in","r",stdin);
// freopen("out.out","w",stdout);
n=read(),m=read(),k=read()+1;
rep(i,2,n) a[i]=read();
rep(i,1,m)
{
int u,v;u=read(),v=read();
add(u,v);add(v,u);
}
cal(1);
for(int i=0;i<dis[1].size();++i) in1[dis[1][i]]=1;
rep(i,2,n) cal(i);
rep(i,2,n)
{
for(int p=0;p<dis[i].size();++p)
{
int j=dis[i][p];
if(!in1[j]) continue;
rep(r,1,3)
{
if(f[i][r]<a[i]+a[j])
{
for(int l=3;l>r;l--) f[i][l]=f[i][l-1],w[i][l]=w[i][l-1];
f[i][r]=a[i]+a[j];
w[i][r]=j;
break;
}
}
}
}
ll ans=0;
rep(l,2,n-1)
{
for(int p=0;p<dis[l].size();++p)
{
int r=dis[l][p];
rep(i,1,3)
{
rep(j,1,3)
{
if(w[l][i]!=w[r][j]&&w[l][i]!=r&&l!=w[r][j]) ans=max(ans,f[l][i]+f[r][j]);
}
}
}
}
cout<<ans<<endl;
//clock_t finish=clock();
//cout<<double(finish-start)/CLOCKS_PER_SEC<<endl;
return 0;
}
TLE on #15#16#17#18#20
麻烦大佬看看是哪里写挂了
回复
共 0 条回复,欢迎继续交流。
正在加载回复...