关于我让ChatGPT写DFS最优路线,ChatGPT写dijkstra这件事
  • 板块灌水区
  • 楼主Manki23333333
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/5/21 09:13
  • 上次更新2023/10/23 15:10:31
查看原帖
关于我让ChatGPT写DFS最优路线,ChatGPT写dijkstra这件事
871004
Manki23333333楼主2023/5/21 09:13
#include  <iostream>
#include  <vector>
#include  <queue>
#include  <cstring>
#define  MAXN  1010
#define  INF  0x3f3f3f3f
using  namespace  std;

struct  Edge  {
        int  v,  w;
        Edge(int  v,  int  w):  v(v),  w(w)  {}
};

vector<Edge>  edges[MAXN];
bool  visited[MAXN];
int  dist[MAXN];

int  dijkstra(int  start,  int  end)  {
        memset(visited,  0,  sizeof(visited));
        memset(dist,  INF,  sizeof(dist));
        dist[start]  =  0;
        priority_queue<pair<int,  int>,  vector<pair<int,  int>>,  greater<>>  pq;
        pq.push(make_pair(dist[start],  start));
        while  (!pq.empty())  {
                auto  p  =  pq.top();
                int  u  =  p.second;
                pq.pop();
                if  (visited[u])  {
                        continue;
                }
                visited[u]  =  true;
                for  (Edge  &e  :  edges[u])  {
                        if  (dist[e.v]  >  dist[u]  +  e.w)  {
                                dist[e.v]  =  dist[u]  +  e.w;
                                pq.push(make_pair(dist[e.v],  e.v));
                        }
                }
        }
        return  dist[end];
}

int  main()  {
        int  n,  m;
        cin  >>  n  >>  m;
        int  u,  v,  w;
        for  (int  i  =  0;  i  <  m;  i++)  {
                cin  >>  u  >>  v  >>  w;
                edges[u].push_back(Edge(v,  w));
        }
        cout  <<  dijkstra(1,  n)  <<  endl;
        return  0;
}
2023/5/21 09:13
加载中...