求助:结果一样WA
查看原帖
求助:结果一样WA
276540
chhhr楼主2021/2/23 21:48

code:

#include<iostream>
#include<fstream>
#include<cstdio>
#include<cstdlib>
#include<cctype>
#include<climits>
#include<cstring>
#include<cmath>
#include<vector>
#include<stack>
#include<map>
#include<queue>
#include<ctime>
#include<string>
#include<cstring>
#include<algorithm>
#include<unordered_map>
#define rep(i,a,n) for (int i=a;i<=n;i++)
#define per(i,a,n) for (int i=a;i>=n;i--)
#define pb push_back
#define ll long long
#define N 20005
using namespace std;
int fa[N], rk[N];
unordered_map<string, int> uom;
void init(){ 
    for(int i=0; i<N; i++){
        fa[i]=i;
        rk[i]=1;
    }
}
int find(int x){
    if(fa[x]==x) return x;
    fa[x]=find(fa[x]);
    return fa[x];
}
void merge(int a, int b){
    int x=find(a), y=find(b);
    if(rk[x]<=rk[y]) fa[x]=y;
    else fa[y]=x;
    if(rk[x] == rk[y] && x != y) rk[y]++;
}
void print(){
    int i=1;
    for(auto it=uom.begin(); it!=uom.end(); it++){
        cout<<i++<<": "<<it->first<<"  "<<it->second<<endl;
    }
}
int main(){
    init();
    
    int n, m, num=1;
    cin>>n>>m;
    char c=getchar();
    string name;
    rep(i, 1, n) { getline(cin, name); /*cout<<"name="<<name<<endl;*/ uom[name]=num++; }
    //print();
    
    rep(i, 1, m){
        string a, b;
        getline(cin, a, ' ');   getline(cin, b, '\n');
        merge(uom[a], uom[b]);
    }
    int k;
    cin>>k;
    c=getchar();
    //ofstream cout("C:\\out.txt");
    while(k--){
        string a, b;
        getline(cin, a, ' ');   getline(cin, b, '\n');
        if(find(uom[a])==find(uom[b])) cout<<"Yes."<<endl;
        else cout<<"No."<<endl;
    }
    return 0;
}

在#1样例中输出都是一样的,但是却WA,不知怎么回事QwQ

2021/2/23 21:48
加载中...