2 条题解

  • 0
    @ 2025-10-8 17:00:30
    #include<bits/stdc++.h>
    using namespace std;
    #define PII pair<int,int>
    const int N=5e4+10;
    vector<PII>G[N];
    int n,m,st,p,t,dis[N],vis[N];
    void dij()
    {
        priority_queue<PII,vector<PII>,greater<PII> >q;
        memset(dis,0x3f,sizeof(dis));dis[st]=0;
        memset(vis,0,sizeof(vis));
        q.push({0,st});
        while(!q.empty())
        {
            int x=q.top().second;q.pop();
            if(vis[x])continue;vis[x]=1;
            for(auto i:G[x])
            {
                int y=i.first,w=i.second;
                if(dis[y]>dis[x]+w)dis[y]=dis[x]+w,q.push({dis[y],y});
            }
        }
    }
    int main()
    {
        int q;scanf("%d%d%d",&n,&m,&q);st=1;
        for(int i=1,x,y,w;i<=m;i++)scanf("%d%d%d",&x,&y,&w),G[x].push_back({y,w}),G[y].push_back({x,w});
        dij();
        while(q--)
        {
            int x,y;scanf("%d%d",&x,&y);
            printf("%d\n",dis[x]+dis[y]);
        }
        return 0;
    }
    
    • 0
      @ 2025-10-8 17:00:23
      #include<bits/stdc++.h>
      using namespace std;
      #define PII pair<int,int>
      const int N=5e4+10;
      vector<PII>G[N];
      int n,m,st,p,t,dis[N],vis[N];
      void dij()
      {
          priority_queue<PII,vector<PII>,greater<PII> >q;
          memset(dis,0x3f,sizeof(dis));dis[st]=0;
          memset(vis,0,sizeof(vis));
          q.push({0,st});
          while(!q.empty())
          {
              int x=q.top().second;q.pop();
              if(vis[x])continue;vis[x]=1;
              for(auto i:G[x])
              {
                  int y=i.first,w=i.second;
                  if(dis[y]>dis[x]+w)dis[y]=dis[x]+w,q.push({dis[y],y});
              }
          }
      }
      int main()
      {
          int q;scanf("%d%d%d",&n,&m,&q);st=1;
          for(int i=1,x,y,w;i<=m;i++)scanf("%d%d%d",&x,&y,&w),G[x].push_back({y,w}),G[y].push_back({x,w});
          dij();
          while(q--)
          {
              int x,y;scanf("%d%d",&x,&y);
              printf("%d\n",dis[x]+dis[y]);
          }
          return 0;
      }
      • 1

      【最短路】领取巧克力 [USACO10FEB] Chocolate Giving S

      信息

      ID
      2249
      时间
      1000ms
      内存
      128MiB
      难度
      6
      标签
      递交数
      19
      已通过
      11
      上传者