当前位置: 代码迷 >> 综合 >> BestCoder Round #42-1001Shaking hands
  详细解决方案

BestCoder Round #42-1001Shaking hands

热度:64   发布时间:2023-12-20 21:28:38.0

水题。。。
Shaking hands Accepts: 452
Submissions: 583
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 65536/65536 K (Java/Others)
问题描述

今天是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杯香槟。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>int main()
{int n;int i,j,sum;int data[30][30];while(scanf("%d",&n)!=EOF){sum=0;memset(data,0,sizeof(int)*900);for(i=0;i<n;i++)for(j=0;j<n;j++){scanf("%d",&data[i][j]);sum+=data[i][j];}sum+=2*n;printf("%d\n",sum);}return 0;
}
  相关解决方案