diff --git "a/\350\277\252\346\235\260\346\226\257\347\211\271\346\213\211" "b/\350\277\252\346\235\260\346\226\257\347\211\271\346\213\211" deleted file mode 100644 index f36c308362abd19365fddd35a329aa0f4766783a..0000000000000000000000000000000000000000 --- "a/\350\277\252\346\235\260\346\226\257\347\211\271\346\213\211" +++ /dev/null @@ -1,61 +0,0 @@ -/*我写过一个关于最短路的博客,很全 - https://blog.csdn.net/struct_cym/article/details/120106356?spm=1001.2014.3001.5501 - 别忘了顺便给我三连一下 -*/ -#include -#include -#include -#define INF 0x3f3f3f3f -using namespace std; - -const int N=1e3+10; - -int d[N],vs[N]; //d是该点距起点的距离,vs是这个点的距离是否被确定 - -struct Edge{ //邻接表 - int to;//所连接的点 - int w;//与所连接的点的距离 -}; - -vectoredge[N]; //构造邻接表 - -int n,m; - -void add(int u,int v,int w){//连接点和线 - edge[u].push_back({v,w}); - edge[v].push_back({u,w}); //如果是单向图就把这段删掉 -} - -int main(){ - while(cin>>n>>m&&n!=0&&m!=0){ //这是多样例输入 - int u,v,w; //u点距v点w远 - for(int i=1;i<=m;i++){ //连接 - cin>>u>>v>>w; - add(u,v,w); - } - for(int i=1;i<=n;i++){ //初始化 一开始所有点离起点都是无限远 - d[i]=INF; - vs[i]=0; - } - d[1]=0; //起点距起点一定是0 - for(int i=1;i<=n;i++){ - int x=0,m=INF; //找目前距起点最近的点 - for(int j=1;j<=n;j++){ - if(!vs[j]&&d[j]<=m){ //没有被找过且距离最小 - x=j; //标记 - m=d[j]; - } - } - vs[x]=1; //把目前离起点最近的点确定 - for(int j=0;j