POJ1258 Agri-Net

考查点:最小生成树
提交情况:1次TLE 2次WA
收获:当有多组数据而题目中没有说什么情况下退出时,用while(scanf()!=EOF)判断,否则TLE~
AC_CODE:
  1. #include <stdio.h>
  2. bool visited[101];
  3. int lowcost[101],mincost,roads[101][101],min;
  4. int prim(int n)
  5. {
  6.     int min_v;
  7.     visited[0]=true;
  8.     mincost=0;//开始忘了,导致2次WA~粗心呐~
  9.     for(int i=0;i<n;i++)
  10.         lowcost[i]=roads[0][i];
  11.     for(int i=1;i<n;i++)
  12.     {
  13.         min=1000000;
  14.         for(int j=0;j<n;j++)
  15.             if(visited[j]==false&&lowcost[j]<min)
  16.             {
  17.                 min=lowcost[j];
  18.                 min_v=j;
  19.             }
  20.         visited[min_v]=true;
  21.         mincost+=min;
  22.         for(int j=0;j<n;j++)
  23.             if(visited[j]==false&&roads[min_v][j]<lowcost[j])
  24.                 lowcost[j]=roads[min_v][j];
  25.     }
  26.     return mincost;
  27. }
  28. int main()
  29. {
  30.     int n;
  31.     while (scanf("%d",&n)!=EOF)
  32.     {
  33.         if(n==0) break;
  34.         for(int i=0;i<n;i++)
  35.             visited[i]=false;
  36.         for(int i=0;i<n;i++)
  37.             for(int j=0;j<n;j++)
  38.                 scanf("%d",&roads[i][j]);
  39.         printf("%d/n",prim(n));
  40.     }
  41.     return 0;
  42. }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值