我写了一个深度优先搜索遍历图以找到这个图指定两点之间的最短路程,但蒟蒻不会算深搜的时间复杂度,求助大佬计算。
(码风有点丑别嫌弃)
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
struct Edge{
int v, w;
Edge(int iv, int iw){
v=iv, w=iw;
}
};
vector<Edge> a[100005];
bool mark[100005], forbiden;
int n, m, sp, ep, cnt, ans=1000000000;
void dfs(int np){
if(np == ep){
ans=min(ans, cnt);
return ;
}
for(auto i : a[np]){
if(mark[i.v]) continue;
mark[i.v]=true;
cnt+=i.w;
dfs(i.v);
if(forbiden){
forbiden=false;
continue;
}
mark[i.v]=false;
cnt-=i.w;
}
}
int main(){
scanf("%d%d%d%d", &n, &m, &sp, &ep);
for (int i=1;i<=m;i++){
int x, y, z;
scanf("%d%d%d", &x, &y, &z);
a[x].push_back(Edge(y, z));
a[y].push_back(Edge(x, z));
}
dfs(sp);
printf("%d", ans);
return 0;
}