握手(bestcode#42)

Shaking hands

问题描述
今天是Gorwin的生日,所以她举办了一个派对并邀请她的朋友来参加。她将邀请n个朋友,为了方便,Gorwin把他们从1到n标号。他们之中有一些人已经相互认识,有一些人不认识对方。相互认识的朋友见面之后会握手然后喝一杯香槟。Gorwin想要知道要准备多少杯香槟。你能帮助她吗?
输入描述
多组测试数据(大概30组),每组数据的第一行有一个整数n表示Gorwin要邀请n个朋友来参加她的派对。
接下来n行会给出一个n*n的矩阵,如果a[i][j]是1,那么朋友i和朋友j是相互认识的,否则他们不认识。
请处理到文件末尾。
[参数约定]
所有输入均为整数。
1<=n<=30
0<=a[i][j]<=1
a[i][i]=0;
a[i][j]=a[j][i] for i!=j
输出描述
对于每一个数据,在一行中输出一个整数代表Gorwin总共要准备多少香槟。
输入样例
2
0 0
0 0
3
0 0 1
0 0 0
1 0 0
输出样例
4
8
Hint
对于第二个数据,Gorwin会和她所有的朋友握手,然后喝三杯香槟,她的三个朋友也各喝一杯。朋友1和朋友3相互认识,他们握手,然后各自喝一杯。这样总共要3+3+2=8杯香槟。
 1 #include<stdio.h>
 2 int main()
 3 {
 4     int T,n,i,j;
 5     int a[31][31];
 6     while(~scanf("%d",&n))
 7     {
 8         int count=0;
 9         for(i=0;i<n;i++)
10             for(j=0;j<n;j++)
11                 scanf("%d",&a[i][j]);
12     for(i=0;i<n;i++)
13         for(j=0;j<i;j++)
14             if(a[i][j]==1)
15                 count++;
16     printf("%d\n",(count+n)*2);
17     
18     }
19 }

 

posted @ 2015-05-23 22:57  御心飞行  阅读(225)  评论(0编辑  收藏  举报