10分求助Prim算法

P1547 [USACO05MAR] Out of Hay S

要考虑重边的情况 应修改成这样: ```cpp #include <cstdio> #include <cstring> #include <algorithm> using namespace std; int n,m,lc[2005],a[2005][2005],vis[2005],ans; int main() { memset(a,63,sizeof(a)); scanf("%d%d",&n,&m); for(int i=1;i<=m;i++) { int x,y,z; scanf("%d%d%d",&x,&y,&z); a[x][y]=min(z,a[x][y]); a[y][x]=min(z,a[y][x]); } memset(lc,63,sizeof(lc)); vis[1]=1; for(int i=1;i<=n;i++) lc[i]=a[1][i]; for(int i=1;i<=n-1;i++) { int k=0; for(int j=1;j<=n;j++) if(!vis[j]&&lc[j]<lc[k]) k=j; vis[k]=1;ans=max(ans,lc[k]); for(int j=1;j<=n;j++) if(!vis[j]&&a[k][j]<lc[j]) lc[j]=a[k][j]; } printf("%d\n",ans); return 0; } ```
by HeXingyao @ 2023-10-03 12:10:02


考虑重边,取个min,我也10分刚刚
by 木易、 @ 2023-10-11 16:23:29


|