#include<iostream>usingnamespace std;int ans =-1;constint N =25;int mp[N][N];bool vis[N];int n, m;voiddfs(int u,int sum){ans =max(ans, sum);for(int i =1; i <= n; i++){if(mp[u][i]>0&&!vis[i]){vis[i]=true;dfs(i, sum + mp[u][i]);vis[i]=false;}}}intmain(){cin >> n >> m;for(int i =1; i <= m; i++){int a, b, c;cin >> a >> b >> c;mp[a][b]= c;mp[b][a]= c;}for(int i =1; i <= n; i++){vis[i]=true;dfs(i,0);vis[i]=false;}cout << ans << endl;return0;}
鄰接表: 代碼如下:
#include<iostream>#include<vector>usingnamespace std;constint N =25;struct node {int from;int to;int w;};int ans;bool vis[N];
vector<node>v[N];voiddfs(int u,int sum){ans =max(ans, sum);for(int i =0; i < v[u].size(); i++){if(!vis[v[u][i].to]&& v[u][i].w >0){vis[v[u][i].to]=true;dfs(v[u][i].to, sum + v[u][i].w);vis[v[u][i].to]=false;}}}intmain(){int n, m;cin >> n >> m;for(int i =1; i <= m; i++){int a, b, c;cin >> a >> b >> c;v[a].push_back({a, b, c});v[b].push_back({b, a, c});}for(int i =1; i <= n; i++){vis[i]=true;dfs(i,0);vis[i]=false;}cout << ans << endl;return0;}