markdown 在线制作ppt json校验和格式化工具

POJ 2377

  1 #include<stdio.h>
  2 #define MAXN 1005
  3 #include<iostream>
  4 #include<algorithm>
  5 #define inf 10000000
  6 using namespace std;
  7 int _m[MAXN][MAXN];
  8 int low_cost[MAXN];
  9 int pre[MAXN];
 10 unsigned prime(int n);
 11 int DFS(int i,int sum,int p);
 12 bool mark[MAXN];
 13 int main()
 14 {
 15     //freopen("acm.acm","r",stdin);
 16     int p;
 17     int edge;
 18     unsigned tem;
 19     int i;
 20     int j;
 21     int u;
 22     int v;
 23     while(cin>>p>>edge)
 24     {
 25         memset(mark,false,sizeof(mark));
 26         for(i = 0; i < p; ++ i)
 27         {
 28             for(j = 0; j < p; ++ j)
 29                 _m[i][j] = inf;
 30         }
 31         for(i = 0; i < edge; ++ i)
 32         {
 33             cin>>u>>v;
 34             -- u;
 35             -- v;
 36             cin>>tem;
 37             if(_m[u][v] == inf)
 38             {
 39                 _m[u][v] = tem;
 40                 _m[u][v] *= -1;
 41                 _m[v][u] = _m[u][v];
 42             }
 43             else
 44                 if(tem > _m[u][v]*(-1))
 45                 {
 46                     _m[u][v] = tem;            
 47                     _m[u][v] *= -1;
 48                     _m[v][u] = _m[u][v];
 49                 }
 50         }
 51         mark[0] = true;
 52         tem = -prime(p);
 53         if(DFS(0,1,p) == p)
 54             cout<<tem<<endl;
 55         else
 56             cout<<-1<<endl;
 57     }
 58 }
 59 int DFS(int i,int sum,int n)
 60 {
 61     int j;
 62     for(j = 0; j < n; ++ j)
 63     {
 64         if(i != j && _m[i][j] != inf && !mark[j])
 65         {
 66             mark[j] = true;
 67             sum = DFS(j,sum+1,n);
 68         }
 69     }
 70     return sum;
 71 }
 72 unsigned prime(int n)
 73 {
 74     int i;
 75     int j;
 76     int k;
 77     unsigned sum = 0;
 78     int min;
 79     for(i = 1; i < n; ++ i)
 80     {
 81         low_cost[i] = _m[0][i];
 82         pre[i] = 0;
 83     }
 84     for(i = 1; i < n; ++ i)
 85     {
 86         min = inf;
 87         for(j = 1; j < n; ++ j)
 88         {
 89             if(low_cost[j]&&low_cost[j] < min)
 90             {
 91                 k = j;
 92                 min = low_cost[j];
 93             }
 94         }
 95         sum += low_cost[k];
 96         low_cost[k] = 0;
 97         for(j = 1; j < n; ++ j)
 98         {
 99             if(_m[k][j] < low_cost[j] && low_cost[j])
100             {
101                 low_cost[j] = _m[k][j];
102                 pre[j] = k;
103             }
104         }
105     }
106     return sum;
107 }

 

posted @ 2015-06-11 10:52  GavinHacker  阅读(198)  评论(0编辑  收藏  举报
markdown 在线制作ppt json校验和格式化工具