蒟蒻prim模板求助,谢谢!

P3366 【模板】最小生成树

signed main?
by 小小小朋友 @ 2019-07-11 18:02:55


@[lijiaan](/space/show?uid=149872) #define int long long
by t162 @ 2019-07-11 18:04:28


……
by 小小小朋友 @ 2019-07-11 18:06:59


不连通应该输出“orz”呀(
by pjykk @ 2019-07-11 18:15:39


```cpp dis[x]=0; ``` ???雾(
by pjykk @ 2019-07-11 18:19:23


# 已过。 ```cpp #include <bits/stdc++.h> #define N 5009 #define int long long using namespace std; int n,m; vector<pair<int, int > > mp[N]; bool vis[N]; int dis[N]; int prim(int x) { int ans=0; int now=0; int index=x; vis[x]=1; for(pair<int,int> v : mp[index]) { if(vis[v.first]==0) { dis[v.first]=min(dis[v.first],v.second); } } for(int i=2; i<=n; i++) { now=21474836461865; index=0; for(int j=1; j<=n; j++) { if(vis[j]==0&&dis[j]<now) { now=dis[j]; index=j; } } vis[index]=1; ans+=now; for(pair<int,int> v : mp[index]) { if(vis[v.first]==0) { dis[v.first]=min(dis[v.first],v.second); } } } return ans; } signed main() { memset(dis,127,sizeof(dis)); int x,y,z; scanf("%lld %lld",&n,&m); for(int i=1; i<=m; i++) { scanf("%lld %lld %lld",&x,&y,&z); mp[x].push_back(make_pair(y,z)); mp[y].push_back(make_pair(x,z)); } cout<<prim(1); return 0; } ```
by si_zhong @ 2019-07-12 09:20:36


@[pjykk](/space/show?uid=94617) 不连通应该输出“orz”呀( 这个是假的,没有这样的测试点。
by si_zhong @ 2019-07-12 09:21:16


你是哪里错的啊,我也是样例过了全WA,我用的kuangbing的模板
by 不穿靴子的猫 @ 2019-07-19 15:45:33


@[不穿靴子的猫](/space/show?uid=154815) 我知道了,这个数据有毒,明明是无向图,居然边会输入两个权值,得选最小的那个
by 不穿靴子的猫 @ 2019-07-19 15:51:11


|