BZOJ1491: [NOI2007]社交網路

來源:互聯網
上載者:User

標籤:資料   void   efi   freopen   blank   while   nbsp   php   ios   

傳送門

最短路計數問題。因為資料量非常小($N \leq 100$),所以Floyd隨便搞搞就行了。

$f[i][j]$表示路徑長度,$g[i][j]$表示最短路方案數。

先跑一遍裸的Floyd,然後利用乘法原理統計$g[i][j]$即可。

$g[i][j]=\sum g[i][k] \times g[k][j]$

 

//BZOJ 1491//by Cydiater//2016.10.27#include <iostream>#include <cstdlib>#include <cstdio>#include <queue>#include <map>#include <ctime>#include <cmath>#include <cstring>#include <string>#include <algorithm>#include <bitset>#include <iomanip>using namespace std;#define ll long long#define up(i,j,n)for(int i=j;i<=n;i++)#define down(i,j,n)for(int i=j;i>=n;i--)#define cmax(a,b) a=max(a,b)#define cmin(a,b) a=min(a,b)#define db doubleconst ll MAXN=105;const ll oo=1LL<<60;inline ll read(){char ch=getchar();ll x=0,f=1;while(ch>‘9‘||ch<‘0‘){if(ch==‘-‘)f=-1;ch=getchar();}while(ch>=‘0‘&&ch<=‘9‘){x=x*10+ch-‘0‘;ch=getchar();}return x*f;}ll N,M,f[MAXN][MAXN],g[MAXN][MAXN],len=0;db ans[MAXN];struct edge{ll x,y,v;}e[MAXN*MAXN];namespace solution{void init(){N=read();M=read();up(i,1,N)up(j,1,N)f[i][j]=oo;up(i,1,N)f[i][i]=0;memset(g,0,sizeof(g));up(i,1,M){ll x=read(),y=read(),v=read();f[x][y]=f[y][x]=v;e[++len]=(edge){x,y,v};}}void slove(){up(k,1,N)up(i,1,N)up(j,1,N)cmin(f[i][j],f[i][k]+f[k][j]);up(i,1,len){ll x=e[i].x,y=e[i].y,v=e[i].v;if(f[x][y]==v)g[x][y]=g[y][x]=1;}up(k,1,N)up(i,1,N)up(j,1,N)if(f[i][j]==f[i][k]+f[k][j]&&i!=k&&j!=k){g[i][j]+=g[i][k]*g[k][j];//cout<<i<<‘ ‘<<k<<‘ ‘<<j<<‘ ‘<<g[i][k]<<‘ ‘<<g[k][j]<<‘ ‘<<g[i][j]<<endl;}up(k,1,N)up(i,1,N)up(j,1,N)if(f[i][j]==f[i][k]+f[k][j]&&i!=k&&k!=j&&i!=j)ans[k]+=(db)(g[i][k]*g[k][j])/(db)(g[i][j]);}void output(){up(i,1,N)printf("%.3lf\n",ans[i]);}}int main(){//freopen("input.in","r",stdin);using namespace solution;init();slove();output();return 0;}

BZOJ1491: [NOI2007]社交網路

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.