有N个学生,编号是1 ~ N,他们之中有人互相抄作业。
现在已知有M对人,他们之间的作业是相似的。这种相似没有传递性,即a与b相似,b与c相似,a和c不一定相似。
老师要抽查Q次作业,每次选出两个人,如果他们的作业相似,就要每人扣一分。
每个人初始成绩是100分,现在给出这些关系,请你给出每个人最终的成绩。
输入:
第一行,两个正整数N,M。(1 <= N, M <= 10 ^ 5)
接下来M行,每行两个整数a, b。代表a和b的作业相似。
接下来一行,一个正整数Q,代表抽查次数。(0 <= Q <= 10 ^ 5)
接下来Q行,每行两个整数a, b。代表抽查a和b的作业
输出:
N个整数,代表每个人的最终成绩,数之间用一个空格隔开。
这是我的程序:
#include<stdio.h>
#include<math.h>
#define M 1000
int main(){
int a[M],b[M],c[M],d[M],e[M],del[M]={0};
int n=0,m=0,Q=0,i=0,j=0,k=0,t=0,u=0,l=0;
scanf("%d %d",&n,&m);
for(i=0;i<m;i++){
scanf("%d %d",&a[i],&b[i]);}
scanf("%d",&Q);
for(j=0;j<Q;j++){
scanf("%d %d",&c[j],&d[j]);
for(l=0;l<m;l++){
if(((a[l]==c[j])&&(b[l]==d[j]))||((a[l]==d[j])&&(b[l]==c[j]))){
e[k]=c[j];
e[k+1]=d[j];
k=k+2;}}}
for(u=0;u<n;u++){
for(t=0;t<k;t++){
if(e[t]==(u+1)){
del[u]++;}}
printf("%d",100-del[u]);
if((u+1)!=n){
printf(" ");
}}
printf("\n");
return 0;}
求帮助!