首页 > 其他分享 >【UVA 11175】From D to E and Back 题解(图论)

【UVA 11175】From D to E and Back 题解(图论)

时间:2023-09-22 13:32:17浏览次数:49  
标签:Case ch matrix int 题解 uv Back 顶点 UVA

取具有n个顶点和m条边的任意有向图D。你可以在 以下方式。E将有m个顶点,每个顶点对应于D的每条边。例如,如果D有一条边uv, 那么E将有一个叫做uv的顶点。现在,每当D有边uv和vw时,E就会有边 顶点uv到顶点vw。E中没有其他边。 你将得到一张E图,并且必须确定E是否有可能是某些有向图D的图的卧图。

输入 第一行输入给出了案例数N(N<220)。接下来是N个测试用例。每一个都开始 其中两条线包含m(0≤m≤300)和k。接下来的k条线将分别包含一对顶点, x和y,这意味着E中有一条从x到y的边。顶点的编号从0到m−1 输出 对于每个测试用例,输出一行包含“case#x:”,后跟“Yes”或“No”,具体取决于 无论E是否是有效的卧图。注意,D允许有重复边和自边。

Sample Input 4 2 1 0 1 5 0 4 3 0 1 2 1 2 3 3 9 0 1 0 2 1 2 1 0 2 0 2 1 0 0 1 1 2 2 Sample Output Case #1: Yes Case #2: Yes Case #3: No Case #4: Yes

思路

易知节点a,b,c,d,若a->c且b->c,则必有a->d,b->d

AC代码

#include <iostream>
#include <cstring>
using namespace std;
#define AUTHOR "HEX9CF"

const int maxn = 305;

// 邻接矩阵
int matrix[maxn][maxn];

void read(int &x)
{
    char ch;
    x = 0;
    while (!('0' <= ch && '9' >= ch))
    {
        ch = getchar();
    }
    while (('0' <= ch && '9' >= ch))
    {
        x = x * 10 + ch - '0';
        ch = getchar();
    }
}

int check(int m)
{
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < m; j++)
        {
            int a = 0;
            int b = 0;
            for (int k = 0; k < m; k++)
            {
                // i -> a 且 j -> a
                if (matrix[i][k] && matrix[j][k])
                {
                    a = 1;
                }
                // i -> b 但 j !-> b
                if (matrix[i][k] ^ matrix[j][k])
                {
                    b = 1;
                }
            }
            if (a && b)
            {
                return 0;
            }
        }
    }
    return 1;
}

int main()
{
    int n;
    read(n);
    for (int cnt = 1; cnt <= n; cnt++)
    {
        int m, k;
        memset(matrix, 0, sizeof(matrix));
        read(m); // 节点数
        read(k); // 边数
        for (int i = 0; i < k; i++)
        {
            int u, v;
            read(u);
            read(v);
            matrix[u][v] = 1;
        }
        cout << "Case #" << cnt << ": ";
        if (check(m))
        {
            cout << "Yes" << endl;
        }
        else
        {
            cout << "No" << endl;
        }
    }
    return 0;
}

标签:Case,ch,matrix,int,题解,uv,Back,顶点,UVA
From: https://blog.51cto.com/HEX9CF/7564573

相关文章

  • CF38H 题解
    problem&blog。远古场翻到的一个不错的题,提供一个好想很多的做法。求出任意两点的路径在全部路径中是第几个。然后随便找两个人,钦定他们是Au吊车尾与CuRank1。这样子就可以直接求出全部人可以是否可以拿AuAgCu了。然后就是傻子DP了,往状态里塞Au与Ag的人数,转移......
  • MUH and Cube Walls 题解
    MUHandCubeWalls前言怎么题解区同质化这么严重,16篇题解全是差分+KMP,就没有人写别的做法吗。(好吧其实是我一开始没想到差分才有了这么多奇怪做法)题目大意给定两个序列\(a,b\),求\(b\)在\(a\)中出现了多少次。我们定义\(b\)在\(a\)的出现次数为:\[\sum_{i=1}^n......
  • c#Winform窗体实际运行大小与size属性设置不一致问题解决
    privatevoidForm1_Load(objectsender,EventArgse){RectangleScreenArea=System.Windows.Forms.Screen.GetWorkingArea(this);//GetWorkingArea()检索显示器的工作区(工作区是显示器的桌面区域,不包括边界、标题栏、任务栏、停靠窗口和停靠......
  • vue学习问题解决
    报错errorComponentname"Index"shouldalwaysbemulti-wordvue/multi-word-component-names解决方法1、问题说明:在创建组件命名时,引用index.vue的过程中报错;2、报错的原因及分析:其一、报错的全称为:errorComponentname"index"shouldalwaysbemulti-wordvue/multi-w......
  • 容斥原理应用Acwing890借鉴题解
    参考文献简单的容斥原理介绍请看下图:C++代码简单的容斥原理介绍请看下图:本题思路:将题目所给出的m个数可以看成是m位的二进制数,例如当p[N]={2,3}时,此时会有01,10,11三种情况而二进制的第零位表示的是p[0]上面的数字2,第1位表示p[1]上面的数字3所以当i=1时表示只选择2的......
  • 题解 ARC141D【Non-divisible Set】
    这个题不是网络流。problem我们说一个集合\(D\)是一个好的集合,当不存在集合中的两个不同元素\(a,b\)使得\(a\)是\(b\)的约数。给定\(N\)个整数的一个集合\(S\),值域均落在\([1,2*M]\)内。对\(S\)中的每个元素\(A_i\)询问:是否存在一个恰好包含\(A_i\)的\(......
  • Little Victor and Set 题解
    LittleVictorandSet题目大意在\([l,r]\)中选不超过\(k\)个相异的数使得异或和最小,输出方案。思路分析分类讨论:当\(k=1\)时:显然选\(l\)是最优的。当\(r-l+1\le10\)时:直接\(O(n2^n)\)暴力枚举每个数选或不选即可。(判了这个之后后面的很多讨论会简单很......
  • docker搭建青龙面板及白屏问题解决方法
    最近也是想赚点小钱,搭建个青龙面包来挂脚本,但是在搭建过程中遇到过一些问题,所以记录下来。docker搭建青龙面板我这里是使用aliyun服务器进行搭建的,系统是centOS7.6版本。另外docker自行搜索安装即可。拉取青龙面板镜像远程登录服务器,输入命令拉取青龙镜像dockerpullwhyour......
  • 题解 P9019 [USACO23JAN] Tractor Paths P
    显然,对于给定的\(l,r\),最短路可以贪心求出,即每次走与当前区间相交且左端点最大的区间,这个可以用倍增加速。定义\(f_{i,j}\)表示从区间\(i\)往右走\(j\)步后到达的区间,\(g_{i,j}\)表示往左走的情况。正反遍历一下即可求出\(f_{i,1}\)和\(g_{i,1}\)。对于第二问,第\(i......
  • XtraBackup下载和卸载
    XtraBackup可以从官方链接https://www.percona.com/downloads/XtraBackup/LATEST/下载你需要的稳定版本。这个链接也提供PerconaXtraBackupDocumentation相关文档下载。下载的时候,注意版本与平台信息。XtraBackup卸载1:aptpackages安装方式的卸载   #sudoapt-getremovep......