1 //hdu 1232
2 #include <iostream>
3 #include <cstdio>
4 #include <cstring>
5 #include <algorithm>
6 #include <set>
7 #include <map>
8 #include <vector>
9 #include <cmath>
10 using namespace std;
11 typedef long long ll;
12 const int inf=0x3f3f3f3f;
13 const int N=2e3+9;
14 int n,m;
15 int pre[N];
16 int find(int x)
17 {
18 int r,j;
19 r=x;
20 while(r!=pre[r])
21 r=pre[r];//查找根节点
22 while(x!=r){//路径压缩,路上的所有点的父节点都是根节点
23 j=pre[x];
24 pre[x]=r;
25 x=j;
26 }
27 return r;
28 }
29 void join(int x,int y)
30 {
31 int xx=find(x);
32 int yy=find(y);
33 if(xx!=yy){
34 pre[yy]=xx;
35 }
36 return ;
37 }
38 void init(int n)
39 {
40 for(int i=1;i<=n;i++)
41 {
42 pre[i]=i;
43 }
44 }
45 int main()
46 {
47 while(~scanf("%d",&n)){
48 if(n==0)
49 break;
50 scanf("%d",&m);
51 init(n);
52 int x,y;
53 for(int i=0;i<m;i++)
54 {
55 scanf("%d%d",&x,&y);
56 join(x,y);
57 }
58 int ans=0;
59 for(int i=1;i<=n;i++)
60 {
61 if(pre[i]==i)
62 //if(find(i)==i)
63 //pre[i]也就是find[i]
64 ans++;
65 }
66 printf("%d\n",ans-1);
67
68 }
69 return 0;
70 }
71
72 //2018年全国多校算法寒假训练营练习比赛(第四场)
73 //B 道路建设 74 //最小生成树 prim 算法
75 #include <iostream>
76 #include <cstdio>
77 #include <cstdlib>
78 #include <cstring>
79 #include <iostream>
80 #include <algorithm>
81 #include <cmath>
82 #include <queue>
83 #include <vector>
84 using namespace std;
85 #define pi acos(-1.0)
86 const int N=150;
87 int n,m,c;
88 int ans;
89 int pre[N];
90 struct Node{
91 int u,v,w;
92 }node[N*100];
93 bool cmp(Node a,Node b)
94 {
95 return a.w<b.w;
96 }
97 void init()
98 {
99 for(int i=1;i<m;i++)
100 {
101 pre[i]=i;
102 }
103 }
104 int find(int x)
105 {
106 int r,j;
107 r=x;
108 while(r!=pre[r])
109 r=pre[r];
110 while(x!=r)
111 {
112 j=pre[x];
113 pre[x]=r;
114 x=j;
115 }
116 return r;
117 }
118 int main()
119 {
120 scanf("%d%d%d",&c,&n,&m);
121 init();
122 for(int i=0;i<n;i++)
123 {
124 scanf("%d%d%d",&node[i].u,&node[i].v,&node[i].w);
125 }
126 sort(node,node+n,cmp);
127 int ret=m;
128 int ans=0;
129 for(int i=0;i<n;i++)
130 {
131 if(ret>1){
132 int uu=find(node[i].u);
133 int vv=find(node[i].v);
134 if(uu!=vv)//不能有回路
135 {
136 ret--;
137 pre[vv]=uu;
138 ans+=node[i].w;
139 }
140 }
141 }
142 if(ret==1&&ans<=c)
143 {
144 printf("Yes\n");
145 }
146 else{
147 printf("No\n");
148 }
149 return 0;
150 }