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)相关推荐

  1. SDUT_人活着系列

    SDUT2929_人活着系列之芳姐和芳姐的猪 解题报告 求出所有最短路,枚举一个猪圈求出到有猪的猪圈的总路程最短. #include <queue> #include <cstdio ...

  2. 人活着系列之开会(最短路_floyd)

    人活着系列之开会 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 人活着如果是为了事业,从打工的到老板的,个个都在拼搏,奋斗了多年 ...

  3. 人活着系列之芳姐和她的猪

    http://blog.csdn.net/lucky_vikey/article/details/38424353 原文地址 #include<stdio.h> #include<s ...

  4. 人活系列Streetlights (秩)

    人活着系列之Streetlights Time Limit: 1000MS Memory limit: 65536K 题目描写叙述 人活着假设是为了家庭,亲情----能够说是在这个世界上最温暖人心的, ...

  5. SDUT-2933-人活着系列之Streetlights (Kruskal)

    人活着系列之Streetlights 题目描述 人活着如果是为了家庭,亲情----可以说是在这个世界上最温暖人心的,也是最让人放不下的,也是我在思索这个问题最说服自己接受的答案.对,也许活着是一种责任 ...

  6. 人为什么活着系列之十六:具体的人具体的环境具体分析

    非常感谢阿懒-上海-PM分享! 今天下午抽空粗略地读完了十五贴 人为什么活着?依坛上前十五贴中的一贴有分两个问题来回答,以下是个人观点: 一是:人为什么活着? 为什么? 我的回答是:没有为什么.人的出 ...

  7. 生活总结[置顶] 程序员的奋斗史(十八)——人活着,只是一种态度

    发一下牢骚和主题无关: 人活着,只是一种立场. 同一个世界,你的立场怎么样,它就是怎么样.同一件事件,你是怎么认为的,它就是怎么样的. 只要心情好,一切都不会太坏.你对生活什么立场,她就对你什么立场. ...

  8. 程序员的奋斗史(十八)——人活着,只是一种态度

    人活着,只是一种态度. 同一个世界,你的态度怎么样,它就是怎么样.同一件事情,你是怎么认为的,它就是怎么样的. 只要心情好,一切都不会太坏.你对生活什么态度,她就对你什么态度.整个世界是不会随着我们的 ...

  9. 一篇男人必看的创业文章。(人活着不能没有钱,但是活着却不能只为了钱)...

    早就看过这篇文章,早就有所感悟,此时此刻,再次读来,感触更为深刻!经济基础决定上层建筑,想要得到幸福的爱情,先要让自己是个幸福的人,男人是在给予中收获的,要想得到幸福,必须是个可以给予别人幸福和美好的 ...

最新文章

  1. 3.3v转5v开关电源芯片LM2731
  2. 为什么不能在init和dealloc函数中使用accessor方法
  3. 制作.ppm格式Linux内核启动logo
  4. 通过js引用外部脚本(嘿嘿,方便直接在浏览器上调试抓取代码)
  5. java代码查询索引文件实例_关于使用pdfbox的对PDF文件通过lucene生成索引文件IndexPDFFiles类代码示例...
  6. 【MySQL】浅谈一致性读
  7. 【体系结构】shared pool的个人理解
  8. 自动化测试工具Selenium
  9. 【14浙江省赛 B ZOJ 3777】Problem Arrangement 【状压dp】 【CCPC-Wannafly Winter Camp Day2 K Sticks】
  10. 永中office linux卸载,永中office Linux版
  11. 显卡4k性能测试软件,碰上UHD都得跪 AN新一代显卡4K对比横评
  12. 听音室-HIFI入门之10张公认的经典发烧碟
  13. linux 编译 mono,Mono和MonoDevelop源码编译安装
  14. 为什么视频无法播放,视频无法播放的原因是什么
  15. 鸿蒙:这个备胎不太冷
  16. ue4-UMG和HUD绘制UI
  17. 闪马智能创始人兼CEO彭垚入选2021年度张江杰出人才拟表彰名单
  18. 大带宽服务器对于网站速度的影响有多大?
  19. protobuffer简介
  20. SPI在linux3.14.78 FS_S5PC100(Cortex A8)和S3C2440上驱动移植(deep dive)_0

热门文章

  1. 用java编写计时器_JAVA编写计时器
  2. 消费扶贫谋定中国农民丰收节交易会 洛水山肴乡村振兴
  3. 农村电商谋定双创工程-李玉庭:互联网+农产品重整流通
  4. 美国农业生产与农产品国际贸易 对话国际农民丰收节贸易会
  5. 硒品牌谋定功能性农业-农业大健康·万祥军:践行健康中国
  6. python列表的增删改查
  7. linux18.04下安装的jdk11.0.2
  8. 最短路 poj1125
  9. 铁乐学Python_day12_作业
  10. c++ Linux中查找查找文件夹中的所有文件