深夜补最短路!

Posted dragondragon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深夜补最短路!相关的知识,希望对你有一定的参考价值。

嘻嘻!

https://cn.vjudge.net/contest/323530#problem/A

show the code:

#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 1005
using namespace std;
const int inf=0x3f3f3f3f;
int dis[maxn],vis[maxn];
int mp[maxn][maxn];
int n;
void init()

    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
        
            if(i==j)
                mp[i][j]=0;
            else
                mp[i][j]=inf;
        

int djs(int st,int ed)

    for(int i=1;i<=n;i++)
    
        dis[i]=mp[st][i];
        vis[i]=0;
    
    vis[st]=1;
    for(int i=1;i<n;i++)
    
        int minn=inf;
        int next=-1;
        for(int j=1;j<=n;j++)
        
            if(vis[j]==0&&dis[j]<minn)
            
                minn=dis[j];
                next=j;
            
        
        if(next==-1)  continue;
        vis[next]=1;
        for(int j=1;j<=n;j++)
        
            if(vis[j]==0)
                dis[j]=min(dis[j],dis[next]+mp[next][j]);
        
    
    return dis[ed];

int main()

	//无向图中边的个数为t,点的个数为n。 
    int t,a,b,x;
    while(~scanf("%d%d",&t,&n))
    
        memset(mp,inf,sizeof(mp));
        while(t--)
        
            scanf("%d%d%d",&a,&b,&x);//起点a,终点b,权值x。 
            mp[a][b]=min(x,mp[a][b]);//可以当板子丫! 
            mp[b][a]=min(x,mp[b][a]);
        
        printf("%d\n",djs(1,n));
    

  

以上是关于深夜补最短路!的主要内容,如果未能解决你的问题,请参考以下文章

❤️数据结构入门❤️(3 - 5)- 单源最短路

数据结构—— 图:最短路径问题

poj3463 最短路和次短路

次短路 第K短路

算法导论——单元最短路径

最短路径 深入浅出Dijkstra算法(一)