C - Remembering the Days
题意:每个点最多经过一次,求最长路
思路:数据范围很小,深搜每个点能到其他点的所有路,取最大
#include <bits/stdc++.h>
using namespace std;
const int N = 110;
int g[N][N];
int n,m;
bool st[N];
int w=0;
int ans=0;
void dfs(int u)
{
st[u]=true;
for(int i=1;i<=n;i++)
{
if(!st[i]&&g[u][i])
{
w+=g[u][i];
st[i]=true;
dfs(i);
w-=g[u][i];
st[i]=false;
}
}
ans=max(ans,w);
}
int main()
{
cin>>n>>m;
while(m--)
{
int a,b,c;
cin>>a>>b>>c;
g[a][b]=g[b][a]=max(g[a][b],c);
}
for(int i=1;i<=n;i++)
{
memset(st,0,sizeof(st));
w=0;
dfs(i);
ans=max(w,ans);
}
cout<<ans<<'\n';
}
标签:Remembering,AtCoder,Beginner,Contest,int,317,Days
From: https://www.cnblogs.com/oystercard/p/17672651.html