北邮OJ-272. 网络的核-14计院上机(第二套)C
2017-03-23 00:55
316 查看
Floyd模板题。
题目
题目
//输入顶点从1始,内部运行顶点从1始 //其实顶点从0编号也可以,改一改就好了 #include <iostream> #include <vector> #define MAXSIZE 100 #define INF 0x7fffffff using namespace std; int main(){ int t,n,m;//vexes' num,edge's num,sourse vex,destination vex int thisNode,nextNode; int newDist; int dist[MAXSIZE+1][MAXSIZE+1]; int totalDist[MAXSIZE+1]; cin>>t; while (t--){ cin>>n>>m; //initiate for (int i=1;i<=n;i++){ for (int j=1;j<=n;j++){ if (i==j) dist[i][j]=0; else dist[i][j]=INF; } totalDist[i]=0; } //input for (int i=0;i<m;i++){ cin>>thisNode>>nextNode; dist[thisNode][nextNode]=dist[nextNode][thisNode]=1;//适用于无向图 } //floyd for (int k=1;k<=n;k++){ for (int i=1;i<=n;i++){ for (int j=1;j<=n;j++){ if (i==k||j==k) continue;//第k趟邻接矩阵十字区不改变 if (dist[i][k]==INF||dist[k][j]==INF)//经过k点不可达 newDist=INF; else newDist=dist[i][k]+dist[k][j];//经过k点可达 if (newDist<dist[i][j])//比较新旧距离 dist[i][j]=newDist; } } } //cal for (int i=1;i<=n;i++){ for (int j=1;j<=n;j++){ if (dist[i][j]==INF) totalDist[i]+=n; else totalDist[i]+=dist[i][j]; } } int minVex=1; for (int i=1;i<=n;i++){ if (totalDist[i]<totalDist[minVex]) minVex=i; } //output cout<<minVex<<endl; } return true; }
相关文章推荐
- 北邮OJ-270. 众数-14计院上机(第二套)A
- 北邮OJ-271. 旋转图像-14计院上机(第二套)B
- 北邮OJ-273. Python List-14计院上机(第二套)D
- 北邮OJ-269. 网络传输-14网研上机D
- 北邮OJ-278. 图像识别-14计院上机C
- 北邮OJ-267-最小堆-14网研上机B
- 北邮OJ-255-奇偶求和-14软院上机A
- 北邮OJ-257- 最近公共祖先-14软院上机C
- 北邮OJ-258-数据库检索-14软院上机D
- 北邮OJ-276. 中位数-14计院上机A
- 北邮OJ-277. 内存分配-14计院上机B
- 北邮OJ 255. 奇偶求和-软件14 2014年北京邮电大学软件工程学院研究生复试
- 北邮OJ 102. 最远距离 北邮2012网研院复试上机题
- 北邮OJ-92. 统计节点个数-13计院上机B
- 北邮OJ-93. 中序遍历序列-13计院上机C
- 北邮OJ-94. 最小距离查询-13计院上机D
- 【北邮OJ】266. 分数加法-网研14
- 【北邮OJ】277. 内存分配-网研14-计算机二14
- 272. 网络的核-计算机一2014 北邮机试题目
- 北邮OJ-266-分数加法-14网研上机A