1 条题解
-
0
C :
#include <stdio.h> int i,j,n,m,a[1001],b[1001],c[1001]; void make_set() { scanf("%d%d",&n,&m); for(i=1;i<=m;i++) scanf("%d%d",&a[i],&b[i]); for(i=1;i<=n;i++) c[i]=i; } void count() { j=1; while(j==1) { j=0; for(i=1;i<=m;i++) { if(c[a[i]]<c[b[i]]) { j=1; c[b[i]]=c[a[i]]; } if(c[a[i]]>c[b[i]]) { j=1; c[a[i]]=c[b[i]]; } } } } void print() { j=0; for(i=1;i<=n;i++) { if(c[i]==i) j++; } printf("%d\n",j); } int main() { int t; scanf("%d",&t); while(t--) { make_set(); count(); print(); } return 0; }
C++ :
#include <stdio.h> int run() { int n,m,a[1111],b[1111],c[1111],i,j,k; scanf("%d%d",&n,&m); for(i=1;i<=m;i++) scanf("%d%d",&a[i],&b[i]); for(i=1;i<=n;i++) c[i]=i; k=1; while(k==1) { k=0; for(i=1;i<=m;i++) { if(c[a[i]]<c[b[i]]) { k=1; c[b[i]]=c[a[i]]; } if(c[a[i]]>c[b[i]]) { k=1; c[a[i]]=c[b[i]]; } } } j=0; for(i=1;i<=n;i++) if(c[i]==i) j++; printf("%d\n",j); } int main() { int t; scanf("%d",&t); while(t!=0) { t--; run(); } return 0; }
Java :
import java.io.*; import java.util.*; public class Main{ static boolean b[]=new boolean[1005]; static int f[]=new int[1005],r[]=new int[1005]; static int getfather(int n){ return f[n]=f[n]==n?n:getfather(f[n]); } static void Union(int fa,int fb){ if(r[fa]>=r[fb]){ f[fb]=f[fa];r[fa]+=r[fb]; }else{ f[fa]=f[fb];r[fb]+=r[fa]; }return; } public static void main(String args[]){ Scanner jin=new Scanner(System.in); while(true){ int T=jin.nextInt(); while(T-->0){ int N=jin.nextInt(),M=jin.nextInt(); for(int i=1;i<=N;i++){ r[i]=1;f[i]=i;b[i]=false; } for(int i=0;i<M;i++){ int A=jin.nextInt(),B=jin.nextInt(); int fa=getfather(A),fb=getfather(B); if(fa!=fb)Union(fa,fb); } int cnt=0; for(int i=1;i<=N;i++) if(!b[getfather(i)]){ b[getfather(i)]=true; cnt++; } System.out.println(cnt); } } } }
Python :
def space_input(): s=raw_input().split() for i in range(len(s)): s[i]=eval(s[i]) return tuple(s) def main(): try: n,p=space_input() except: n,p=space_input() friends=[{i} for i in range(1,n+1)] for i in range(p): a,b=space_input() contact={} for number in (a,b): for j in range(n): if number in friends[j]: contact[number]=j if contact[a]<contact[b]: friends[contact[a]]=friends[contact[a]]|friends.pop(contact[b]) n-=1 elif contact[b]<contact[a]: friends[contact[b]]=friends[contact[b]]|friends.pop(contact[a]) n-=1 print len(friends) t=input() for i in range(t): main()
- 1
信息
- ID
- 1178
- 时间
- 1000ms
- 内存
- 32MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者