记录编号 |
84227 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOI 2007]社交网络 |
最终得分 |
100 |
用户昵称 |
Frost |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.057 s |
提交时间 |
2013-12-10 20:04:47 |
内存使用 |
0.47 MiB |
显示代码纯文本
#include<iostream>
#include<fstream>
#include<iomanip>
using namespace std;
double map[101][101],p[101][101];
double ans[101];
int main()
{
ifstream in("network1.in");
ofstream out("network1.out");
int n,m;
in>>n>>m;
for(int i=1;i<=n;++i)
{
for(int j=1;j<=n;++j)
{
if(i!=j)
{
map[i][j]=100000;
}
}
}
for(int i=1;i<=m;++i)
{
int a,b,c;
in>>a>>b>>c;
map[a][b]=c;
map[b][a]=c;
p[a][b]=1;
p[b][a]=1;
}
for(int k=1;k<=n;++k)
{
for(int i=1;i<=n;++i)
{
if(i==k)continue;
for(int j=1;j<=n;++j)
{
if(j==i || j==k)continue;
if(map[i][j]>map[i][k]+map[k][j])
{
map[i][j]=map[i][k]+map[k][j];
p[i][j]=p[i][k]*p[k][j];
}
else
{
if(map[i][k]+map[k][j]==map[i][j]&&i!=j&&i!=k&&j!=k)
{
p[i][j]+=p[i][k]*p[k][j];
}
}
}
}
}
/*for(int i=1;i<=n;++i)
{
for(int j=1;j<=n;++j)
{
cout<<map[i][j]<<" ";
}
cout<<endl;
}*/
for(int k=1;k<=n;++k)
{
for(int i=1;i<=n;++i)
{
if(i==k)continue;
for(int j=1;j<=n;++j)
{
if(j==i || j==k)continue;
if(map[i][k]+map[k][j]==map[i][j])
{
ans[k]+=p[i][k]*p[k][j]/p[i][j];
}
}
}
}
for(int i=1;i<=n;++i)
{
out<<setiosflags(ios::fixed)<<setprecision(3)<<ans[i]<<endl;
}
return 0;
}