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 }
时间: 2024-11-05 11:54:30