BZOJ-1491-社交网络
2024-10-18 10:59:55
题目链接:https://vjudge.net/problem/HYSBZ-1491
题目大意:中文题目,题意见题目
题目分析:由于数据量很小,可以考虑进行Floyd算法。
第一次进行Floyd算法,算出两点之间的最短路径,另外记录下这两点之间有多长条最短路走法。
第二场进行类似Floyd算法的方法,计算经过k点,是否可以走出最短路,如果可以的话,进行计算。
注意在两次统计计算的过程中,要用组合的方法,即num[i][j]=num[i][k]*num[k][j];
给出代码:
#include <iostream> #include <cstdio> #include <queue> #include <cstring> #include <string> using namespace std; int n,m; +][+]; +][+]; int inf=0x3f3f3f; ]; int main() { cin>>n>>m; memset(node,inf,sizeof(node)); //memset(node1,0,sizeof(node1)); // memset(mark,0,sizeof(mark)); ; i<m; i++) { int a,b,c; scanf("%d%d%d",&a,&b,&c); node[a][b]=c; node[b][a]=c; node1[a][b]=; node1[b][a]=; } // for(int i=1; i<=n; i++) // node[i][i]=0; /* for(int i=1; i<=n; i++) { for(int j=1; j<=n; j++) { cout<<node[i][j]<<" "; } cout<<endl; } cout<<endl;*/ ; k<=n; k++) { ; i<=n; i++) { ; j<=n; j++) { if(k!=i&&k!=j&&i!=j) { if(node[i][j]==node[i][k]+node[k][j]) node1[i][j]=node1[i][j]+(node1[i][k]*node1[k][j]); else if(node[i][j]>node[i][k]+node[k][j]) { node1[i][j]=node1[i][k]*node1[k][j]; node[i][j]=node[i][k]+node[k][j]; } } // node[i][j]= } } } /* for(int i=1; i<=n; i++) { for(int j=1; j<=n; j++) { cout<<node[i][j]<<" "; } cout<<endl; }*/ ; k<=n; k++) { ; i<=n; i++) { ; j<=n; j++) { ) { mark[k]+=((node1[i][k]*node1[k][j])/node1[i][j]); // cout<<mark[k]<<" "<<k<<" "<<i<<" "<<j<<endl; // cout<<node1[i][k]<<" "<<node1[k][j]<<endl; } } } } ; i<=n; i++) printf("%.3f\n",mark[i]); ; }
最新文章
- C 标准库系列之errno.h
- freeregex-0.01 使用文档
- .NET 客户端上传本地excel文件到服务器上,并在客户端显示
- UVa 11178 (简单练习) Morley&#39;s Theorem
- linux的一点一滴---open
- Linux C 编程内存泄露检測工具(二):memwatch
- app间互相启动及传参数
- java操作txt文本(二):删除文本括号内的内容
- 【Linux篇】--sed的用法
- Confluence 6 在升级过程中查看合并日志
- kaptcha生成java验证码
- java中random的几个方法的使用Math.random()和random().
- 10.12Django form表单
- 【Python54.1--豆瓣登录】
- Redis事件订阅和持久化存储
- Win10系列:JavaScript综合实例2
- (11)线程池(最新的concurrent.futures包去开启)
- API:详解 pandas.read_csv
- selenium-python:登录网站并签到
- [LeetCode] 697. Degree of an Array_Easy tag: Hash Table