使用的Prim算法,在本地样例和第一个点都能过,但是交上去就WA
#include<bits/stdc++.h>
using namespace std;
int n,m,sum;
bool book[5010];
vector<int>e[5010];
vector<int>w[5010];
priority_queue<pair<int,int> >q;
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
int u,v,ww;
scanf("%d%d%d",&u,&v,&ww);
e[u].push_back(v);
w[u].push_back(ww);
e[v].push_back(u);
w[v].push_back(ww);
}
book[1]=1;
for(int i=0;i<e[1].size();i++)
{
q.push(make_pair(e[1][i],w[1][i]));
}
while(!q.empty())
{
int vv=q.top().first;
int ww=q.top().second;
if(book[vv]==1)
{
q.pop();
continue;
}
book[vv]=1;
for(int i=0;i<e[vv].size();i++)
{
q.push(make_pair(e[vv][i],w[vv][i]));
}
sum+=ww;
q.pop();
}
cout<<sum;
return 0;
}
P3366_1.in
5 18
2 4 276
3 3 435
3 4 608
2 4 860
1 2 318
1 3 547
5 4 419
2 5 98
1 5 460
5 3 399
3 5 240
3 2 733
3 3 903
4 2 909
5 2 206
3 4 810
2 1 115
2 3 419
P3366_1.out
729