专题四 · 1005
Posted suamfadmp
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了专题四 · 1005相关的知识,希望对你有一定的参考价值。
代码及解释
#include <iostream>
#include <stdio.h>
#include <string.h>
//
// 连续两次莫名 AC,结果发现各种脑残手误
// 变量忘记初始化就使用
// 这个特别坑的地方调试了好几次才发现……
int n,ans;
int imap[110][110],dis[110],vis[110];
inline void Prim()
int i;
for(i = 1;i <= n; ++i)
dis[i] = imap[1][i];
vis[i] = 0;
dis[1] = 0;
vis[1] = 1;
int j, k = 0, tmp;
for(i = 1; i <= n; ++i)
tmp = 0x3f3f3f3f;
for(j = 1; j <= n; ++j)
if(!vis[j] && tmp > dis[j])
k = j;
tmp = dis[j];
if(tmp == 0x3f3f3f3f)
break;
vis[k] = 1;
ans += dis[k];
for(j = 1; j <= n; ++j)
if(!vis[j] && dis[j] > imap[k][j])
dis[j] = imap[k][j];
int main()
while(~scanf("%d", &n) && n)
int ii, jj, temp1, temp2;
for(int i = 0;i < n * (n - 1) / 2; ++i)
scanf("%d %d", &ii, &jj);
scanf("%d", &temp1);
scanf("%d", &temp2);
if(temp2)
imap[ii][jj] = imap[jj][ii] = 0;
else
imap[ii][jj] = imap[jj][ii] = temp1;
ans = 0;
Prim();
printf("%d\\n", ans);
return 0;
以上是关于专题四 · 1005的主要内容,如果未能解决你的问题,请参考以下文章