人活着系列之芳姐和芳姐的猪(Floyd)
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2929
这个题一方面数据水,另一方面就是思维水,一拿到题就以为考最小生成树。
因为这个题需要求各点间的距离,又因为猪圈的数目最大为600,所以根本就没寻思考Floyd,一方面思维,另一方面是水的后台,因为猪每天去固定的猪圈吃饭,所以求出每个猪到每个猪圈固定的距离便可。
WA(以为已经求出各点间的最短距离,只要猪圈没猪便不会去)
反例
3 4 3
2
3
4
1 2 1
1 3 1
1 4 1
#include <iostream> #include <string.h> #include <stdlib.h> #include <stdio.h> #define N 1000001 using namespace std; int map[602][602],dis[602],v[602]; int n,m,k,a[401],V; void Floy() {for(int k=1; k<=m; k++){for(int j=1; j<=m; j++){for(int i=1; i<=m; i++){if(map[j][i]>map[j][k]+map[k][i]){map[j][i]=map[j][k]+map[k][i];}}}} } void prim() {memset(v,0,sizeof(v));for(int i=1; i<=m; i++)dis[i]=map[a[1]][i];v[a[1]]=1;int min,k;int sum=0;for(int i=1; i<V; i++){min=N;for(int j=1; j<=m; j++){if(v[j]==0&&dis[j]<min){min=dis[j];k=j;}}v[k]=1;//printf("min==%d\n",min);sum=sum+min;for(int j=1; j<=m; j++){if(v[j]==0&&dis[j]>map[k][j]){dis[j]=map[k][j];}}}printf("%d\n",sum); } int main() {int xx[1211],yy[1211],zz[1211];int sum,sum1;scanf("%d%d%d",&n,&m,&k);for(int i=1; i<=m; i++){for(int j=1; j<=m; j++){map[i][j]=N;map[j][i]=N;}map[i][i]=0;}int b[1211];V=0;memset(b,0,sizeof(b));for(int i=1; i<=n; i++){scanf("%d",&a[i]);b[a[i]]++;}for(int i=1; i<=m; i++){if(b[a[i]])V++;}for(int i=1; i<=k; i++){scanf("%d%d%d",&xx[i],&yy[i],&zz[i]);if(zz[i]<map[xx[i]][yy[i]]){map[xx[i]][yy[i]]=zz[i];map[yy[i]][xx[i]]=zz[i];}}Floy();/*for(int i=1;i<=m;i++){for(int j=1;j<=m;j++){printf("%d ",map[i][j]);}printf("\n");}*/for(int i=1; i<=k; i++){sum=0;sum1=0;for(int j=1; j<=n; j++){if(xx[i]==a[j]) sum++;if(yy[i]==a[j]) sum1++;}if(sum==0){for(int k=1; k<=m; k++){map[xx[i]][k]=N;map[k][xx[i]]=N;}map[xx[i]][xx[i]]=0;}if(sum1==0){for(int k=1; k<=m; k++){map[yy[i]][k]=N;map[k][yy[i]]=N;}map[yy[i]][yy[i]]=0;}if(sum&&sum1){map[xx[i]][yy[i]]=sum*map[xx[i]][yy[i]];map[yy[i]][xx[i]]=sum1*map[yy[i]][xx[i]];}}prim(); } return 0; }
AC的
#include <iostream> #include <string.h> #include <stdio.h> #include <stdlib.h> #define N 1000001 using namespace std; int n,m,k; int a[351],map[601][601]; void Floy() {for(int k=1; k<=m; k++){for(int i=1; i<=m; i++){for(int j=1; j<=m; j++){if(map[i][j]>map[i][k]+map[k][j]){map[i][j]=map[i][k]+map[k][j];}}}} } int main() {int xx,yy,zz;scanf("%d%d%d",&n,&m,&k);for(int i=1; i<=n; i++)scanf("%d",&a[i]);for(int i=1; i<=m; i++){for(int j=1; j<=m; j++){map[i][j]=N;map[j][i]=N;}map[i][i]=0;}while(k--){scanf("%d%d%d",&xx,&yy,&zz);if(map[xx][yy]>zz){map[xx][yy]=zz;map[yy][xx]=zz;}}Floy();int min=N;int sum;for(int i=1; i<=m; i++){sum=0;for(int j=1; j<=n; j++){sum=sum+map[a[j]][i];}if(min>sum)min=sum;}printf("%d\n",min); return 0; }
人活着系列之芳姐和芳姐的猪(Floyd)相关推荐
- SDUT_人活着系列
SDUT2929_人活着系列之芳姐和芳姐的猪 解题报告 求出所有最短路,枚举一个猪圈求出到有猪的猪圈的总路程最短. #include <queue> #include <cstdio ...
- 人活着系列之开会(最短路_floyd)
人活着系列之开会 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 人活着如果是为了事业,从打工的到老板的,个个都在拼搏,奋斗了多年 ...
- 人活着系列之芳姐和她的猪
http://blog.csdn.net/lucky_vikey/article/details/38424353 原文地址 #include<stdio.h> #include<s ...
- 人活系列Streetlights (秩)
人活着系列之Streetlights Time Limit: 1000MS Memory limit: 65536K 题目描写叙述 人活着假设是为了家庭,亲情----能够说是在这个世界上最温暖人心的, ...
- SDUT-2933-人活着系列之Streetlights (Kruskal)
人活着系列之Streetlights 题目描述 人活着如果是为了家庭,亲情----可以说是在这个世界上最温暖人心的,也是最让人放不下的,也是我在思索这个问题最说服自己接受的答案.对,也许活着是一种责任 ...
- 人为什么活着系列之十六:具体的人具体的环境具体分析
非常感谢阿懒-上海-PM分享! 今天下午抽空粗略地读完了十五贴 人为什么活着?依坛上前十五贴中的一贴有分两个问题来回答,以下是个人观点: 一是:人为什么活着? 为什么? 我的回答是:没有为什么.人的出 ...
- 生活总结[置顶] 程序员的奋斗史(十八)——人活着,只是一种态度
发一下牢骚和主题无关: 人活着,只是一种立场. 同一个世界,你的立场怎么样,它就是怎么样.同一件事件,你是怎么认为的,它就是怎么样的. 只要心情好,一切都不会太坏.你对生活什么立场,她就对你什么立场. ...
- 程序员的奋斗史(十八)——人活着,只是一种态度
人活着,只是一种态度. 同一个世界,你的态度怎么样,它就是怎么样.同一件事情,你是怎么认为的,它就是怎么样的. 只要心情好,一切都不会太坏.你对生活什么态度,她就对你什么态度.整个世界是不会随着我们的 ...
- 一篇男人必看的创业文章。(人活着不能没有钱,但是活着却不能只为了钱)...
早就看过这篇文章,早就有所感悟,此时此刻,再次读来,感触更为深刻!经济基础决定上层建筑,想要得到幸福的爱情,先要让自己是个幸福的人,男人是在给予中收获的,要想得到幸福,必须是个可以给予别人幸福和美好的 ...
最新文章
- 3.3v转5v开关电源芯片LM2731
- 为什么不能在init和dealloc函数中使用accessor方法
- 制作.ppm格式Linux内核启动logo
- 通过js引用外部脚本(嘿嘿,方便直接在浏览器上调试抓取代码)
- java代码查询索引文件实例_关于使用pdfbox的对PDF文件通过lucene生成索引文件IndexPDFFiles类代码示例...
- 【MySQL】浅谈一致性读
- 【体系结构】shared pool的个人理解
- 自动化测试工具Selenium
- 【14浙江省赛 B ZOJ 3777】Problem Arrangement 【状压dp】 【CCPC-Wannafly Winter Camp Day2 K Sticks】
- 永中office linux卸载,永中office Linux版
- 显卡4k性能测试软件,碰上UHD都得跪 AN新一代显卡4K对比横评
- 听音室-HIFI入门之10张公认的经典发烧碟
- linux 编译 mono,Mono和MonoDevelop源码编译安装
- 为什么视频无法播放,视频无法播放的原因是什么
- 鸿蒙:这个备胎不太冷
- ue4-UMG和HUD绘制UI
- 闪马智能创始人兼CEO彭垚入选2021年度张江杰出人才拟表彰名单
- 大带宽服务器对于网站速度的影响有多大?
- protobuffer简介
- SPI在linux3.14.78 FS_S5PC100(Cortex A8)和S3C2440上驱动移植(deep dive)_0