• CodeVS 2639 约会计划


    Portal:http://codevs.cn/problem/2639/

    简单题,并查集再加个map,一开始我以为要用图论,失算

    FML,我的代码怎么这么长。。。优化太多反而慢啊。。。大常数大师啊。。。

     1 #include<iostream>
     2 #include<algorithm>
     3 #include<set>
     4 #include<cstdio>
     5 #include<cstdlib>
     6 #include<cmath>
     7 #include<map>
     8 #include<cstring>
     9 using namespace std;
    10 #define FOR(i,j,k) for(int i=j;i<=k;i++)
    11 #define FORD(i,j,k) for(int i=j;i>=k;i--)
    12 #define LL long long
    13 #define maxn 2010
    14 int father[maxn],rank[maxn];
    15 int n,m,p;
    16 string x,y;
    17 map<string,int> name;
    18 int setfind(int xx)
    19 {
    20     int fa=father[xx];
    21     if(fa==xx) return fa;
    22     else return father[xx]=setfind(fa);
    23 }
    24 void setunion(int xx,int yy)
    25 {
    26     int X=setfind(xx);
    27     int Y=setfind(yy);
    28     if(X==Y) return;
    29     if(rank[X]==rank[Y]) {father[X]=Y;rank[Y]++;}
    30     else if(rank[X]>rank[Y]) father[X]=Y;
    31     else father[Y]=X;
    32 }
    33 bool is_same(int xx,int yy)
    34 {
    35     return setfind(xx)==setfind(yy);
    36 }
    37 int main()
    38 {
    39 cin>>n>>m>>p;
    40 FOR(i,1,n)
    41 {cin>>x;name[x]=i;father[i]=i;rank[i]=1;}
    42 FOR(i,1,m)
    43 {
    44     cin>>x>>y;
    45     setunion(name[x],name[y]);
    46 }
    47 FOR(i,1,p)
    48 {
    49     cin>>x>>y;
    50     if(is_same(name[x],name[y])) cout<<"safe"<<endl;
    51     else cout<<"cc cry"<<endl;
    52 }
    53 return 0;
    54 }
    渣代码

    蛋疼地在路径压缩时做了个用空间换时间的优化

    /*init*/i=1-m   rank[i]=1;
    //
    if(X==Y) return;
        if(rank[X]==rank[Y]) {father[X]=Y;rank[Y]++;}
        else if(rank[X]>rank[Y]) father[X]=Y;
        else father[Y]=X;
    //平时并的时候都是直接father[X]=Y;,汗
    垃圾优化,毁我青春

    UN3次才AC,粗心啊

    啧,丢人啊

  • 相关阅读:
    CSS技巧(二):CSS hack
    CSS技巧(一):清除浮动总洁
    js中apply方法的使用
    call 方法
    正则表达式
    【js事件详解】js事件封装函数,js跨浏览器事件处理机制
    [BZOJ 4300] 绝世好题
    [SPOJ1557] Can you answer these queries II
    [Codeforces 877E] Danil and a Part-time Job
    [Codeforces 914D] Bash and a Tough Math Puzzle
  • 原文地址:https://www.cnblogs.com/mukoiaoi/p/5634401.html
Copyright © 2020-2023  润新知