额
by Sammuel @ 2018-11-05 21:15:01
```
#include<bits/stdc++.h>
using namespace std;
int n,m,a[25][25],b[25],d,f,ans;
void dfs(int x,int an)
{
if(an>ans)
ans=an;
for(int i=1;i<=n;i++)
if(!a[x][i]&&b[i]==0)
{
b[i]=1;
dfs(i,an+a[x][i]);
b[i]=0;
}
}
int main()
{
int max=0x7f;
cin>>n>>m;
for(int i=1;i<=m;i++)
{
cin>>d>>f>>a[d][f];
a[f][d]=a[d][f];
}
for(int i=1;i<=n;i++)
{
dfs(i,0);
if(ans>max)
max=ans;
memset(b,0,sizeof(0));
}
cout<<max;
return 0;
}
```
by Sammuel @ 2018-11-05 21:16:51
希望更丰富的展现?使用[Markdown](https://www.luogu.org/wiki/show?name=%E5%B8%AE%E5%8A%A9%EF%BC%9Amarkdown)
by songhongyi @ 2018-11-05 21:16:57
@[Sammuel](/space/show?uid=138468)
### 原因有三,代码如下,观察注释
```cpp
#include<bits/stdc++.h>
using namespace std;
int n,m,a[25][25],b[25],d,f,ans;
void dfs(int x,int an)
{
if(an>ans)
ans=an;
for(int i=1;i<=n;i++)
if(a[x][i]>0&&b[i]==0)//判断条件有问题
{
b[i]=1;
dfs(i,an+a[x][i]);
b[i]=0;
}
}
int main()
{
int max=0x7f;
cin>>n>>m;
for(int i=1;i<=m;i++)
{
cin>>d>>f;
cin>>a[d][f];
a[f][d]=a[d][f];
}
for(int i=1;i<=n;i++)
{
b[i]=1;//原代码未将b[i]标记
dfs(i,0);
if(ans>max)
max=ans;
memset(b,0,sizeof(b));//sizeof(b)而不是sizeof(0);
}
cout<<max;
return 0;
}
```
by Zyee1217 @ 2018-11-05 21:47:40
#em..
##谢大佬解答
###说我是nc还是手残好呢 还能打成###sizeof(0)。。
@[Zyee1217](/space/show?uid=56121)
by Sammuel @ 2018-11-05 21:58:27
#我发现了一件神奇的事
```
for(int i=1;i<=m;i++)
{
cin>>d>>f>>a[d][f];
a[f][d]=a[d][f];
}
```
是错的
```
for(int i=1;i<=m;i++)
{
cin>>d>>f;
cin>>a[d][f];
a[f][d]=a[d][f];
}
```
就是对的。。。
是肿么一回事
是我见识疏浅吗QWQ
by Sammuel @ 2018-11-05 22:04:56
##In
2 1
1 2 67
##Right Out
67
##My Out
127
by Sammuel @ 2018-11-05 22:13:51
我写了个if过了。。
by Sammuel @ 2018-11-05 22:16:17
好像不能直接cin输入,我在调试你的原码的时候也发现了这个问题,你也可以进行一些简单的调试比如
```cpp
#include<bits/stdc++.h>
using namespace std;
int d ,f,a[25][25];
int main()
{
cin>>d>>f>>a[d][f];
cout<<a[d][f];
a[f][d]=a[d][f];
return 0;
}
```
输入原题的第一个数据
```
1 2 10
```
你会发现结果是0
by Zyee1217 @ 2018-11-05 22:45:36
@[Sammuel](/space/show?uid=138468)
by Zyee1217 @ 2018-11-05 22:45:44