5 条题解

  • 2
    @ 2022-11-3 9:25:17

    最短路都会吧,直接看代码。

    #include <iostream>
    #include <algorithm>
    #include <queue>
    #include <cstring>
    using namespace std;
    const int N=405;
    struct Edge {
    int v,w;
    };
    vector<Edge> edge[N*N];
    int n;
    int dis[N*N];
    bool vis[N*N];
    struct cmp {
    bool operator()(int a,int b) {
    return dis[a]>dis[b];
    }
    };
    int Dijkstra(int start,int end)
    {
    priority_queue<int,vector<int>,cmp> dijQue;
    memset(dis,-1,sizeof(dis));
    memset(vis,0,sizeof(vis));
    dijQue.push(start);
    dis[start]=0;
    while(!dijQue.empty()) {
    int u=dijQue.top();
    dijQue.pop();
    vis[u]=0;
    if(u==end)
    break;
    for(int i=0; i<edge[u].size(); i++) {
    int v=edge[u][i].v;
    if(dis[v]==-1 || dis[v]>dis[u]+edge[u][i].w) {
    dis[v]=dis[u]+edge[u][i].w;
    if(!vis[v]) {
    vis[v]=true;
    dijQue.push(v);
    }
    }
    }
    }
    return dis[end];
    }
    int main()
    {
    int a,b;
    scanf("%d%d",&a,&b);
    Edge Qpush;
    
    Qpush.v=1;
    Qpush.w=a;
    edge[0].push_back(Qpush);
    Qpush.v=2;
    Qpush.w=b;
    edge[1].push_back(Qpush);
    
    printf("%d",Dijkstra(0,2));
    return 0;
    
    
    }
    
    • @ 2022-11-3 9:27:45

      wyy,jbl

    • @ 2022-11-3 9:28:02

      A+BA + B 你搁着用dijdij是吧。

信息

ID
1
时间
1000ms
内存
64MiB
难度
5
标签
递交数
123
已通过
52
上传者