MLE求助
查看原帖
MLE求助
315619
ikun_fjh楼主2023/10/17 22:58
#include <bits/stdc++.h>
using namespace std;

const int N = 300;

int n , m , k;
int a[N];
vector <short int> g[N];
int dis[N][N];
bool f[N][N] , vis[N];
long long ans;

void bfs(int sx)
{
    queue<int> q;
    while(!q.empty())   q.pop();
    q.push(sx);
    while(!q.empty())
    {
        int u = q.front();
        q.pop();
        for(auto i : g[u])
        {
            if(dis[sx][i] > dis[sx][u] + 1) 
            {
                dis[sx][i] = dis[sx][u] + 1;
            }
            if(dis[sx][i] - 1 <= k) 
            {
                f[sx][i] = true;
            }
            q.push(i);
        }
    }
    return;
}

void dfs(int pos , int sum , int step)
{
	if (step == 4 && f[pos][1] == true )
	{
		ans = max(ans , 1LL *(sum + a[pos]));
		return;
	}
	for (int i = 1 ; i <= n ; i++)
	{
		if (f[pos][i] == true && vis[i] == false )
		{
			vis[i] = true;
			dfs(i , sum + a[pos] , step + 1);
			vis[i] = false;
		}
	}
}

int main()
{
    //ios::sync_with_stdio(false);
    
    memset(dis , 0x3f , sizeof(dis));
    memset(vis , 0 , sizeof(vis));
    memset(f , false , sizeof(f));

    cin >> n >> m >> k;
    for (int i = 2 ; i <= n ; i++)
    {
        cin >> a[i];
    }
    while(m--)
    {
        int x , y;
        cin >> x >> y;
        g[x].push_back(y);
        g[y].push_back(x);
    }
    for (int i = 1 ; i <= n ; i++)
    {
        bfs(i);
    }
    dfs(1 , 0 , 0);
    cout << ans;
    return 0;
}

求助神犇,为什么MLE? 祝csp-s rp++

2023/10/17 22:58
加载中...