• 烦人的幻灯片(拓扑)


    Page 527

    出现的 大 错误:ans[ ] 内的数不是一个一个挨着放进去的 !而是按照扫到的范围的顺序放进去

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<string> 
    #include<algorithm>
    using namespace std;
    int n;
    struct H{
        int x1,x2,y1,y2;
    }card[30];
    struct K{
        int x,y;
    }f[30]; 
    int tree[30][30],r[30],ans[30],tree2[30][30];
    bool p[30];
    int main()
    {
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
        {
            scanf("%d%d%d%d",&card[i].x1,&card[i].x2,&card[i].y1,&card[i].y2);
        }
    
        for(int i=1;i<=n;i++)
        {
            int a,b;
            scanf("%d%d",&a,&b);
            f[i].x=a,f[i].y=b;
            for(int j=1;j<=n;j++) 
            {
                if(a>=card[j].x1&&a<=card[j].x2&&b<=card[j].y2&&b>=card[j].y1)
                {
                    tree[i][++tree[i][0]]=j; //点对应的范围 
                    tree2[j][++tree2[j][0]]=i;                                                                                                                         
                    r[j]++;//范围的入度,内有几个点 
                }
            }
        }
    
    
    
    
    
        int num=0;
        while(num<n)
        {
            int t=0,i; 
            for(i=1;i<=n;i++)
            {
                if(r[i]==1)//如果范围对应的点只有一个 
                {
                    int x;
                    for(int k=1;k<=tree2[i][0];k++)
                      if(!p[tree2[i][k]])
                      {
                        ans[i]=tree2[i][k],p[ans[i]]=true;break;//ans[ ] 内的数不是一个一个挨着放进去的 !而是按照扫到的范围的顺序放进去
                      } 
                    t++;num++;
                    r[i]=0x7fffffff;                
                }
                for(int j=1;j<=tree[ans[i]][0];j++)
                   r[tree[ans[i]][j]]--;
            }
            if(t==0) 
            {
                printf("None");
                return 0;
            }
    
    
        }
    
    
    
    
        for(int i=1;i<=n;i++)
        {
            char c;
            c=i+'A'-1;
            printf("%c %d
    ",c,ans[i]);
        } 
        return 0;
    }
  • 相关阅读:
    Web学习之css
    Spring学习之第一个hello world程序
    MySQL基础学习总结
    Jmeter参数化
    mysql慢查询解析-linux命令
    mysql慢查询
    mysql_存储引擎层-innodb buffer pool
    mysql_Qcahce
    memocached基础操作
    Memcached安装配置
  • 原文地址:https://www.cnblogs.com/dfsac/p/6819768.html
Copyright © 2020-2023  润新知