diji

Posted xiaolaji

tags:

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

#include <bits/stdc++.h>
using namespace std;
#define maxn 100005
struct Edge
{
    int v,w,next;
} edge[maxn];
int head[maxn];
int cnt;
int n,m;
void addedge(int u,int v,int w)
{
    edge[cnt].v=v;
    edge[cnt].w=w;
    edge[cnt].next=head[u];
    head[u]=cnt++;
}
bool vis[maxn];
int dist[maxn];
void Dijkstra(int s)
{
    priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > > q;
    memset(dist,-1,sizeof(dist));
    dist[s]=0;
    q.push(make_pair(0,s));
    while(!q.empty())
    {
        int u=q.top().second;
        q.pop();
        if(vis[u]==true) continue;
        vis[u]=true;
        for(int i=head[u]; i!=-1; i=edge[i].next)
        {
            int v=edge[i].v;
            int w=edge[i].w;
            if((dist[v]>dist[u]+w||dist[v]==-1)&&!vis[v])
            {
                dist[v]=dist[u]+w;
                q.push(make_pair(dist[v],v));
            }
        }
    }
}
int main()
{
    int st,en;
    scanf("%d%d%d%d",&n,&m,&st,&en);
    memset(head,-1,sizeof(head));
    for(int i=1; i<=m; i++)
    {
        int x,y,z;
        scanf("%d%d%d",&x,&y,&z);
        addedge(x,y,z);
        addedge(y,x,z);
    }
   Dijkstra(st);
    printf("%d
",dist[en]);
    return 0;
}

  

以上是关于diji的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段——CSS选择器

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

片段和活动之间的核心区别是啥?哪些代码可以写成片段?

VSCode自定义代码片段——.vue文件的模板

VSCode自定义代码片段6——CSS选择器

VSCode自定义代码片段——声明函数