最近在学习c++,为了能够提高和巩固c++程序设计能力,于是在acm做题时,尝试着用c++写代码。下面是我的第一个c++程序,题目来源于acm.pku.cn的2421。望大家多多指教。
  1acm 2421#include<iostream>
  2acm 2421
  3acm 2421using namespace std;
  4acm 2421
  5acm 2421#define INFINITY 1001
  6acm 2421
  7acm 2421
  8acm 2421class prim
  9acm 2421{    
 10acm 2421    struct item
 11acm 2421    {
 12acm 2421        int v;
 13acm 2421        int lowedge;
 14acm 2421    }lowcost[100];
 15acm 2421    int r[100][100];
 16acm 2421    int N;
 17acm 2421    int q;
 18acm 2421    public:
 19acm 2421        
 20acm 2421        void initialize();
 21acm 2421        int Prim(int v);
 22acm 2421        friend void ReadData();
 23acm 2421
 24acm 2421};
 25acm 2421void prim::initialize()
 26acm 2421{
 27acm 2421
 28acm 2421    
 29acm 2421        
 30acm 2421            for(int i = 0;i<N;i++)
 31acm 2421            {
 32acm 2421                for(int j=0;j<N;j++)
 33acm 2421                {
 34acm 2421                    r[i][j]=INFINITY;
 35acm 2421                    
 36acm 2421                }
 37acm 2421            }
 38acm 2421}
 39acm 2421int prim::Prim(int v)
 40acm 2421{
 41acm 2421    int min,w=0,result=0;
 42acm 2421    int i,j;
 43acm 2421    for(i=0;i < N;i++)
 44acm 2421    {
 45acm 2421        lowcost[i].lowedge = r[v][i];
 46acm 2421        lowcost[i].= v;
 47acm 2421    }
 48acm 2421    lowcost[v].lowedge = -1;
 49acm 2421
 50acm 2421    for(i = 1;i<N;i++)
 51acm 2421    {
 52acm 2421        min = INFINITY;
 53acm 2421        for(j = 0;j<N;j++)
 54acm 2421        {
 55acm 2421            if(lowcost[j].lowedge > -1 && lowcost[j].lowedge<min)
 56acm 2421            {
 57acm 2421                min = lowcost[j].lowedge;
 58acm 2421                w = j;
 59acm 2421            }
 60acm 2421        }
 61acm 2421         
 62acm 2421        result += lowcost[w].lowedge;
 63acm 2421        lowcost[w].lowedge = -1;
 64acm 2421        for(j = 0;j<N;j++)
 65acm 2421        {
 66acm 2421            if(r[w][j] < lowcost[j].lowedge &&lowcost[j].lowedge >-1)
 67acm 2421            {
 68acm 2421                lowcost[j].lowedge = r[w][j];
 69acm 2421                lowcost[j].= w;
 70acm 2421            }
 71acm 2421        }
 72acm 2421    }
 73acm 2421    return result;
 74acm 2421
 75acm 2421}
 76acm 2421
 77acm 2421void ReadData()
 78acm 2421{
 79acm 2421    prim s;
 80acm 2421    int x,y;
 81acm 2421    scanf("%d",&s.N);
 82acm 2421    s.initialize();
 83acm 2421    for(int i = 0;i<s.N;i++)
 84acm 2421    {
 85acm 2421        for(int j=0;j<s.N;j++)
 86acm 2421        {
 87acm 2421            
 88acm 2421                scanf("%d",&s.r[i][j]);
 89acm 2421            
 90acm 2421        
 91acm 2421        }
 92acm 2421    }
 93acm 2421    scanf("%d",&s.q);
 94acm 2421    for(i = 0;i<s.q;i++)
 95acm 2421    {
 96acm 2421        scanf("%d%d",&x,&y);
 97acm 2421        s.r[x-1][y-1= s.r[y-1][x-1= 0;
 98acm 2421    
 99acm 2421    }
100acm 2421    printf("%d\n",s.Prim(0));
101acm 2421}
102acm 2421
103acm 2421int main()
104acm 2421{
105acm 2421    
106acm 2421    ReadData();
107acm 2421    return 0;
108acm 2421
109acm 2421}

相关文章:

  • 2022-12-23
  • 2021-08-05
  • 2021-10-02
  • 2021-09-14
  • 2021-06-10
  • 2022-12-23
  • 2022-12-23
  • 2021-11-29
猜你喜欢
  • 2021-08-26
  • 2021-07-30
  • 2021-09-23
  • 2022-12-23
  • 2021-06-10
  • 2022-12-23
  • 2021-10-22
相关资源
相似解决方案