题目:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=114427#problem/A
代码:
#include<stdio.h>
#include<string.h>
using namespace std;
int maps[505][505];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n,m;
memset(maps,0,sizeof(maps));
scanf("%d%d",&n,&m);
int a[505],b[505];
for(int i=0;i<m;i++)
scanf("%d",&a[i]);
for(int i=0;i<m;i++)
scanf("%d",&b[i]);
double ans=0;
for(int i=0;i<m;i++)
{
if(maps[a[i]][b[i]]==0)
{
maps[a[i]][b[i]]=1;
maps[b[i]][a[i]]=1;
ans++;
}
}
printf("%.3lf\n",ans/n);
}
}
有n个点,在计算有从起点到终点的边的个数相除,且a->b与b->a相同。