uva459

来源:互联网 发布:淘宝店铺抓取 编辑:程序博客网 时间:2024/06/05 19:21
#include <iostream>#include <stdio.h>#include <algorithm>#include <string.h>using namespace std;int par[500005];int g[500005];int cases;int find_par(int x){    return x==par[x]?x:find_par(par[x]);}void union_(int x,int y){    int a=find_par(x);    int b=find_par(y);    par[a]=b;}int main(){    cin>>cases;    int t=0;    getchar();    getchar();    while(cases--)    {        string s1;        getline(cin,s1);        int n=s1[0]-'A'+1;        memset(g,0,sizeof(g));        for(int i=1; i<=n; i++)            par[i]=i;        string s;        for(int i=0; getline(cin,s)&&s!=""; i++)        {            int q=s[0]-'A'+1;            int p=s[1]-'A'+1;            union_(q,p);        }        for(int i=1; i<=n; i++)            par[i]=find_par(i);        for(int i=1; i<=n; i++)        {            int x=par[i];            g[x]++;        }        int ans=0;        for(int i=1; i<=n; i++)            if(g[i]) ans++;        if(t > 0) cout<<endl; t++;        cout << ans << endl;    }    return 0;}/*110 74 106 46 107 55 13 67 3*/

这题值得注意的是输入输出格式
scanf()读换行的时候只会读一个空格,不会把换行提走,打印的时候也只会打印一个空格。cin不能读换行,也不能提走换行

以后统一用getline(cin,s);格式

原创粉丝点击