关于 T1 n^4 暴力加卡时能 AC 民间数据
  • 板块题目总版
  • 楼主lnwhl
  • 当前回复6
  • 已保存回复6
  • 发布时间2022/10/29 20:42
  • 上次更新2023/10/27 05:04:26
查看原帖
关于 T1 n^4 暴力加卡时能 AC 民间数据
451328
lnwhl楼主2022/10/29 20:42
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N=2505;
const int inf=1e9;
int n,m,kk,dis[N][N];
ll ans=0,s[N];
vector<int>g[N],to[N];
void bfs(int st)
{
    for(int i=1;i<=n;++i)dis[st][i]=inf;
    queue<int>q;q.push(st);dis[st][st]=-1;
    while(!q.empty())
    {
        int u=q.front();q.pop();
        for(int i=0;i<g[u].size();++i)
        {
            int v=g[u][i];
            if(dis[st][v]==inf)
            {
                dis[st][v]=dis[st][u]+1;
                q.push(v);
            }
        }
    }
}
bool cmp(int x,int y)
{
    return s[x]>s[y];
}
signed main()
{
    freopen("holiday.in","r",stdin);
    freopen("holiday.out","w",stdout);
    cin>>n>>m>>kk;
    for(int i=2;i<=n;++i)cin>>s[i];
    for(int i=1;i<=m;++i)
    {
        int u,v;cin>>u>>v;
        g[u].push_back(v);
        g[v].push_back(u);
        dis[u][v]=dis[v][u]=1;
    }
    for(int i=1;i<=n;++i)
        bfs(i);
    for(int i=1;i<=n;++i)
    {
        for(int j=2;j<=n;++j)
        {
            if(j==i)continue;
            if(dis[i][j]<=kk)to[i].push_back(j);
        }
        sort(to[i].begin(),to[i].end(),cmp);
    }
    int cnt=0;
    for(int i=0;i<to[1].size();++i)
    {
        int u=to[1][i];
        for(int j=i+1;j<to[1].size();++j)
        {
            int v=to[1][j];
            for(int k=0;k<to[u].size();++k)
            {
                int uu=to[u][k];
                if(uu==u||uu==v)continue;
                for(int l=0;l<to[v].size();++l)
                {
                    int vv=to[v][l];
                    if(vv==u||vv==v||vv==uu)continue;cnt++;
                    if(dis[uu][vv]<=kk)ans=max(ans,s[u]+s[v]+s[uu]+s[vv]);
                    if(cnt>200000000){cout<<ans;return 0;}
                }
            }
        }
    }
    cout<<ans;
    return 0;
}

官方数据 AC 可能性大吗??

2022/10/29 20:42
加载中...