您的位置:首页 > 其它

prepare for the provincial time --10.2--Density of Power Network

2014-03-20 15:07 465 查看
Density of Power Network
            嗯,通过这个题目还是对自己的读题能力有自信的,哈哈,是我先看懂的。。
            题意:给出一个公交网络,给出公交车号的数量,给出每段公交路线的起始点公交号,问这个公交网络的密度,也就是线路的数量除以公交号的数量,但是有一点要注意,这个路线是认为是无向的,比如2---3、、3---2认为是一条路。
            那么问题就变成计算有多少条公交路线,我一开始想的是用两重循环的数组检验现在的路线和之前的路线书否重复,思路不好,就容易时出错。。啊、然后SH学长说可以当成是一个二维数组,行列分别代表起始点,AX姐在这个基础上写了一个只浏览一半数组的方法,哈哈,至于我么,也是一样的思路,实现方法不同而已,就是如果这半边的数据符合要求,就把对应的另外半边的合法数据抹掉。
            细节+代码:
           
#include<stdio.h>
#include<string.h>
int a[600][600],b[600],c[600];
int main(){
int T,i,j,k,bus,road,count;
double end;
scanf("%d",&T);
for(i = 1;i<=T;i++){
scanf("%d%d",&bus,&road);
memset(a,0,sizeof(a));
b[0] = c[0] = 0;
for(j = 1;j<=road;j++)
scanf("%d",&b[j]);
for(j = 1;j<=road;j++)
scanf("%d",&c[j]);
for(j = 1;j<=road;j++)
a[b[j]][c[j]] = 1;
count = 0;
for(j = 0;j<=bus;j++){
for(k = 0;k<=bus;k++){
if(a[j][k]==1){
count++;
if(a[k][j]==1)
a[k][j] = 0;
}
}
}
end = count*1.00/bus;
printf("%.3lf\n",end);
}
return 0;
}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: