为啥只有二十分求指点
查看原帖
为啥只有二十分求指点
1101599
LeeZH楼主2023/10/17 15:32
#include<iostream>
#include<algorithm>
using namespace std;//m个结构体每个寸一个数据,从景点一枚举到景点n开始,dfs内枚举m条路,创建一个bool数组看看到过没有;maxx
int n,m;
int sum=0;
int maxx=0;
bool check[1000000];
struct att
{
    int a;
    int b;//两个景点
    int len;//长度
}att[1000000];//m条路
void dfs(int f)//i为景点
{
    for(int p=1;p<=m;p++)
    {
        if(att[p].a==f&&check[att[p].b]==0){
      
            check[att[p].b]=1;
            check[att[p].a]=1;
            sum+=att[p].len;
            f=att[p].b;
            dfs(f);
            sum-=att[p].len;
            check[att[p].b]=0;
        }

        else if(att[p].b==f&&check[att[p].a]==0)//找到了路的一端是起始点
    
        {
            check[att[p].a]=1;
            check[att[p].b]=1;
            sum+=att[p].len;
            f=att[p].a;
            dfs(f);
            sum-=att[p].len;
            check[att[p].a]=0;         
        }
        maxx=max(sum,maxx);

    }
}
      



int main()
{
    //n个观景点,m条路
    cin>>n>>m;
    for(int i=1;i<=m;i++)cin>>att[i].a>>att[i].b>>att[i].len;
    for(int l=1;l<=n;l++)//从各个景点出发
    {
        dfs(l);
    }
    cout<<maxx;
    return 0;
}
2023/10/17 15:32
加载中...