7 条题解

  • 0
    @ 2024-2-23 20:09:07

    实在没搞懂,去同步超一大堆,scanf稳过 大佬求解

    #include<bits/stdc++.h>
    #define F(a,b) for(int i=(a);i<=(b);i++)
    #define DF(a,b) for(int i=(b);i>=(a);i--)
    using namespace std;
    int a[22222];
    int get(int x)
    {
    	if(a[x]==x) return x;
    	return a[x]=get(a[x]);
    }
    int main()
    {
    	int n,m;
    	cin>>n>>m;
    	for(int i=1;i<=n;i++)
    	{
    		a[i]=i;
    	}
    	for(int i=1;i<=m;i++)
    	{
    		int x,y;
    		scanf("%d%d",&x,&y);
    		a[get(x)]=a[get(y)];
    	}
    	int t;
    	scanf("%d",&t);
    	while(t--)
    	{
    		int x,y;
    		scanf("%d%d",&x,&y);
    		if(a[get(x)]==a[get(y)])
    		{
    			cout<<"Yes\n";
    		}
    		else
    		{
    			cout<<"No\n";
    		}
    	}
    	return 0;
    }
    
    • -1
      @ 2023-7-16 15:24:36

      其实不用ios::sync_with_stdio(false);的。 我一开始用了ios但是一直错 我把ios删了后竟然对了 其实只要把cin改成scanf就行了 下面上代码

      using namespace std;
      int a[200005];
      int find(int x)
      {
      	if(a[x]==x) return x;
      	return a[x]=find(a[x]);
      }
      int main()//整体和并查集差不多
      {
      	int n, m, x, y;
      	cin>>n>>m;
      	for(int i=1; i<=n; i++)
      		a[i]=i;
      	for(int i=0; i<m; i++)
      	{
      		scanf("%d%d",&x,&y);//cin改scanf
      		a[find(x)]=a[find(y)];
      	}
      	int q;
      	cin>>q;
      	for(int i=0; i<q; i++)
      	{
      		scanf("%d%d",&x,&y);//cin改scanf
      		if(a[find(x)]==a[find(y)]) cout<<"Yes\n";
      		else cout<<"No\n";
      	}
      	return 0;
      }
      

      亲测能过,大家给个赞吧

      • -1
        @ 2023-7-16 14:41:32

        请使用\n代替endl,并使用关同步

        • -1
          @ 2023-7-16 14:36:02
          #include <bits/stdc++.h>
          #define IOS ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
          #define re register
          using namespace std;
          typedef long long ll;
          int fth[1000010], n, m, q, x, y, tx, ty;
          int fnd(int t)
          {
          	return (fth[t]==t?t:fth[t]=fnd(fth[t]));
          }
          int main()
          {
          	IOS;
          	cin>>n>>m;
          	for(int i=0; i<=n; i++) fth[i]=i;
          	for(int i=0; i<m; i++)
          	{
          		cin>>x>>y;
          		tx=fnd(x), ty=fnd(y);
          		if(tx!=ty) fth[ty]=tx;
          	}
          	cin>>q;
          	while(q--)
          	{
          		cin>>x>>y;
          		cout<<(fnd(x)==fnd(y)?"Yes\n":"No\n");
          	}
          	return 0;
          }
          
          • -3
            @ 2023-7-16 14:28:56

            #include<bits/stdc++.h> using namespace std; int fa[20005],n,m; int get(int x){ return (fa[x]==x?x:fa[x]=get(fa[x])); } int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin>>n>>m; for(int i=1;i<=n;i++)fa[i]=i; for(int i=1;i<=m;i++){ int x,y; cin>>x>>y; fa[get(x)]=get(y); } cin>>m; for(int i=1;i<=m;i++){ int x,y; cin>>x>>y; if(get(x)==get(y))cout<<"Yes"; else cout<<"No"; cout<<endl; } return 0; }

            • -4
              @ 2023-7-16 14:42:12
              #include<bits/stdc++.h>
              using namespace std;
              int fa[20005],n,m;
              int get(int x){
              	return (fa[x]==x?x:fa[x]=get(fa[x]));
              }
              int main(){
              	ios_base::sync_with_stdio(false);
              	cin.tie(0);
              	cout.tie(0);
              	cin>>n>>m;
              	for(int i=1;i<=n;i++)fa[i]=i;
              	for(int i=1;i<=m;i++){
              		int x,y;
              		cin>>x>>y;
              		fa[get(x)]=get(y);
              	}
              	cin>>m;
              	for(int i=1;i<=m;i++){
              		int x,y;
              		cin>>x>>y;
              		if(get(x)==get(y))cout<<"Yes";
              		else cout<<"No";
              		cout<<"\n";
              	}
              	return 0;
              }
              
              • -4
                @ 2023-7-16 14:29:17

                #include<bits/stdc++.h> using namespace std; int fa[20005],n,m; int get(int x){ return (fa[x]==x?x:fa[x]=get(fa[x])); } int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin>>n>>m; for(int i=1;i<=n;i++)fa[i]=i; for(int i=1;i<=m;i++){ int x,y; cin>>x>>y; fa[get(x)]=get(y); } cin>>m; for(int i=1;i<=m;i++){ int x,y; cin>>x>>y; if(get(x)==get(y))cout<<"Yes"; else cout<<"No"; cout<<endl; } return 0; }

                • 1

                信息

                ID
                454
                时间
                1000ms
                内存
                512MiB
                难度
                2
                标签
                递交数
                292
                已通过
                78
                上传者