福州建设工程质量监督网站,专业做公司宣传网站的,河南省建设科技网站,怎样给网站做后台Portal.
观察到数据范围 n ≤ 100 n\leq 100 n≤100#xff0c;考虑用 Floyd。
在 Floyd 更新最短路的过程中#xff0c;如果以当前结点为中转点的路径更新过#xff0c;那么可以累加答案#xff1b;否则#xff0c;更新最短路径并重置答案。
统计答案时#xff0c;枚…Portal.
观察到数据范围 n ≤ 100 n\leq 100 n≤100考虑用 Floyd。
在 Floyd 更新最短路的过程中如果以当前结点为中转点的路径更新过那么可以累加答案否则更新最短路径并重置答案。
统计答案时枚举中转点判断累加即可。
#include bits/stdc.h
using namespace std;
#define int long longint f[105][105],C[105][105];
double I[105];signed main()
{int n,m;cinnm;for(int i1;in;i) for(int j1;jn;j) f[i][j]1e9;for(int i1,a,b,c;im;i) cinabc,f[a][b]f[b][a]c,C[a][b]C[b][a]1;for(int k1;kn;k)for(int i1;in;i)for(int j1;jn;j)if(i!jj!ki!k){if(f[i][j]f[i][k]f[k][j]) C[i][j]C[i][k]*C[k][j];else if(f[i][j]f[i][k]f[k][j]) f[i][j]f[i][k]f[k][j],C[i][j]C[i][k]*C[k][j];}for(int k1;kn;k)for(int i1;in;i)for(int j1;jn;j)if(i!jj!kk!if[i][j]f[i][k]f[k][j]) I[k]((double)C[i][k]*C[k][j])/C[i][j];for(int i1;in;i) printf(%.3lf\n,I[i]);return 0;
}