模板 Dijkstra

来源:互联网 发布:吃鸡买号还是软件 编辑:程序博客网 时间:2024/06/08 01:28

模板 Djkstra

#include<iostream>#include<algorithm>#include<queue>#include<cstdio>#include<cstring>using namespace std;inline void read(int&x) {    int f=1;x=0;char c=getchar();    while(c>'9'||c<'0') {if(c=='-') f=-1;c=getchar();}    while(c>='0'&&c<='9') {x=(x<<3)+(x<<1)+c-48,c=getchar();}    x=x*f;}const int maxn = 1e3+5;const int maxv = 1e4+5;int mp[maxv][maxv];bool vis[maxn];int dis[maxn];int V,E;void Dij(int s){    memset(vis,0,sizeof vis);    memset(dis,0x3f,sizeof dis);    dis[s] = 0;    while(true){        int v = -1;        for(int i = 1 ;i <= V;i++){            if(!vis[i]&&(v==-1||dis[i]<dis[v]))                v = i;        }        vis[v] = 1;        if(v==-1) break;        for(int i = 1;i <= V;i++){            if(dis[i]>dis[v]+mp[v][i]){                dis[i] = dis[v]+mp[v][i];            }        }    }}int main(){    read(V),read(E);    memset(mp,0x3f,sizeof mp);    for(int i = 0 ;i < E;i++){        int a,b,c;        read(a),read(b),read(c);        if(mp[a][b]>c){            mp[a][b] = c;        }    }    Dij(1);    cout << dis[5]<<endl;    return 0;}/*35 51 2 62 3 42 4 54 5 61 5 1 */
原创粉丝点击