题目:城市地图
输入第一行表示有n个城市,m条马路。
接下来m行是类似于a b c这样的数据,表示有一条路可以从城市a到b,且路程为c公里。
需要注意的是这里的路都是单向的,也就是有向图。
求出1号城市到n号城市的最短距离。
分析:求最短路可以用DFS,BFS,Dijksrta,Floyed 等算法求解。目前在看图的遍历,就用DFS了。。。
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <vector>
#include <set>
#include <map>
#define INF 99999999
using namespace std;
const int maxn=105;
int e[maxn][maxn];
int vis[maxn];
int minx=INF;
int sx,ex;
int n,m;
void init(){//初始化
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(i==j) e[i][j]=0;//自己到自己的距离为0
else e[i][j]=INF;//初始为无穷大,说明此事城市i和城市j之间还没有路相通
}
}
}
void dfs(int now,int step){
if(step>minx) return ;
if(now==n){
if(step<minx){
minx=step;//更新最短路
}
return;
}
for(int j=1;j<