T1求调##

emmmmmmm

把你错误代码附上
我对照一下哪里有问题

#include<bits/stdc++.h>
using namespace std;
int n,m,w,v,u,total;
struct eage
{
  int v,w;
};
vector <eage> G[5001];
void prim()
{
  vector <int> dis(n+1,INT32_MAX);
  vector <int> vist(n+1,0);
  priority_queue<pair<int,int>,vector<pair<int,int>>,greater<>>pq;
  pq.push({0,1});
  dis[1] = 0;
  while(!pq.empty())
  {
    int w=pq.top().first;
    int u=pq.top().second;
    pq.pop();
    if(vist[u])
    {
      continue;
    }
    ans += w;
    total++;
    vist[u]=1;
    for(auto [v,w]:G[u])
    {
      if(vist[v]==0&&w<dis[v])
      {
        dis[v]=w;
        pq.push({w,v});
      }
    }
  }
}
int main()
{
  cin >> n >> m;
  memset(a,-1,sizeof(a));
  for(int i = 0;i < m;i++)
  {
    int u,v,l;
    cin >> u >> v >> l;
    G[w].push_back(v,l);
    G[v].push_back(w,l);
  }
  prim();
  cout << total;
  return 0;
}

1.定义ans
2.删掉memset(a,-1,sizeof(a));
3.

for(int i = 0;i < m;i++)
  {
    int u,v,l;
    cin >> u >> v >> l;
    G[w].push_back(v,l);
    G[v].push_back(w,l);
  }

改成

for(int i = 0;i < m;i++)
  {
    int u,v,l;
    cin >> u >> v >> l;
    G[u].push_back({v,l});
    G[v].push_back({u,l});
  }

4.输出ans不是total