冬季练习
来源:互联网 发布:centos 集成环境 编辑:程序博客网 时间:2024/06/02 23:21
lightOJ 1040
一个简单的最小生成树的问题,只要注意取一个最小值就可以了。还是比较轻松的。
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int MAXN = 55;const int INF = 0x3f3f3f3f;int mat[MAXN][MAXN];int n;int dist[MAXN];bool vis[MAXN];int solve(int sum){ int begin = 1; for(int i = 1;i <= n;i++){ if(i == begin) dist[i] = 0; else dist[i] = min(mat[begin][i],mat[i][begin]); } int dv,ds; memset(vis,false,sizeof vis); vis[begin] = true; int res = 0; for(int cas = 1;cas < n;cas ++){ dv = -1; ds = INF; for(int i=1;i<=n;i++){ if(!vis[i] && dist[i] < ds){ dv = i; ds = dist[i]; } } if(dv == -1) return -1; vis[dv] = true; res += ds; for(int i=1;i<=n;i++){ if(!vis[i] && dist[i] > min(mat[dv][i],mat[i][dv])){ dist[i] = min(mat[dv][i],mat[i][dv]); } } } return sum - res;}int main(){ int T,nc = 1; scanf("%d",&T); while(T--){ scanf("%d",&n); int sum = 0; for(int i = 1;i<=n;i++) { for(int j = 1;j<=n;j++) { scanf("%d",&mat[i][j]); sum += mat[i][j]; if(mat[i][j] == 0) mat[i][j] = INF; } } // prim(); printf("Case %d: %d\n",nc++,solve(sum)); } return 0;}
1 0
- 冬季练习
- 2016冬季练习
- 2016冬季练习
- 2016冬季练习
- 冬季练习(sy)
- 冬季校园
- 冬季恋歌
- 冬季健身
- 冬季恋歌
- 冬季保健
- 冬季锻炼
- 冬季一日
- 冬季篮球赛
- 冬季恋歌
- 冬季养生
- 多事的冬季出差
- 看完了《冬季恋歌》
- 冬季宜多吃哪些食物?
- python 获取命令行参数
- 基于arcgis model转换CAD至SHP,实现注记到多边形字段传递
- ios 10 私有api 跳转设置页面
- Android开发模式MVP,MVC
- 函数
- 冬季练习
- ds作业(hash)
- OfficeContainer.cpp
- php复选框生成数组与mysql的交互问题
- OpenLayers3加载离线百度地图(百度迁徙底图)
- 计算机1
- 【服务器】nginx二级域名配置
- 用博弈的思想看世界
- 基于WebRTC M53 的Android库编译流程