【捞一捞】
真的吗真的吗这题只能用最短路做吗
只拿了10分
# include <cstdio>
# include <iostream>
# include <cstring>
# include <algorithm>
using namespace std;
struct sth{
int sum,num;
}e[30010];//邻接链表结构体
int a,b,n,m,cnt = 0,c,d,ee,te,minn = 0x3f3f3f3f,lk[30010],f[2500][2500];
void srt(int x,int y){
e[++cnt]={y,lk[x]};
lk[x] = cnt;
}//邻接链表,已开双倍边
void dfs(int p,int money)
{
for (int i = lk[p];i != 0;i = e[i].num)
{
if (f[p][e[i].sum] == -1)
{
continue;
}//我的思路的是如果走过了就不走这条边了以免到环时死循环
ee = f[p][e[i].sum];
f[p][e[i].sum] = -1;//标记走过
f[e[i].sum][p] = -1;//标记走过
if (e[i].sum == te)//如果到了目标点
{
printf("\n\n");//蒟蒻的调试
if (money < minn) minn = money + ee;
printf("%d",money);//调试
printf("\n\n");//调试
}
else
{
dfs(e[i].sum,money + ee);//如果没到目标点继续搜
}
}
}
int main()
{
scanf("%d %d %d %d",&n,&m,&c,&te);
for (int i = 1;i <= m;i++)
{
scanf("%d %d",&a,&b);
scanf("%d",&f[a][b]);
f[b][a] = f[a][b];
srt(a,b);//无向图存两次
srt(b,a);
}
dfs(c,0);
printf("%d",minn);//输出
}
蒟蒻迷惑了不会最短路用了深搜遍历图怎么办
经过蒟蒻多次测试发现money好像只会越来越大?