码迷,mamicode.com
首页 > 其他好文 > 详细

UVA - 11175 From D to E and Back(思路)

时间:2019-02-07 13:33:30      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:lse   bsp   std   cas   class   有向图   size   image   tin   

题目:

技术图片

 

 

思路:

如图E:图中a、b、c、d是有向图D中的顶点,如果ac、bc都指向cd,而ac又指向ce,那bc同样应该有一条指向ce的边不然就不能从图D转换来。所以直接枚举顶点就可以了。

技术图片

代码:

#include <bits/stdc++.h>
#define inf 0x3f3f3f3f
#define MAX 1e3
#define FRE() freopen("in.txt","r",stdin)
#define FRO() freopen("out.txt","w",stdout)
using namespace std;
typedef long long ll;
typedef pair<int, int> P;
const int maxn = 310;
int mp[maxn][maxn];
int m,k;

bool judge() {
    for(int i=0; i<m; i++) {
        for(int j=0; j<m; j++) {
            if(i==j) continue;
            bool ok=true,ook=true;
            for(int p=0; p<m; p++) {
                if(i==p||j==p) continue;
                if(mp[i][p] && !mp[j][p]) {
                    ook = false;
                }
                if(mp[j][p] && !mp[i][p]) {
                    ook = false;
                }
                if(mp[i][p] && mp[j][p]) {
                    ok = false;
                }
            }
            if(!ok&&!ook){
                return false;
            }
        }
    }
    return true;
}

int main() {
    //FRE();
    int kase,st,en;
    scanf("%d",&kase);
    for(int o=1; o<=kase; o++) {
        memset(mp,0,sizeof(mp));
        scanf("%d%d",&m,&k);
        for(int i=0; i<k; i++) {
            scanf("%d%d",&st,&en);
            mp[st][en] = 1;
        }

        if(!judge()) {
            printf("Case #%d: No\n",o);
        } else {
            printf("Case #%d: Yes\n",o);
        }
    }
    return 0;
}

 

UVA - 11175 From D to E and Back(思路)

标签:lse   bsp   std   cas   class   有向图   size   image   tin   

原文地址:https://www.cnblogs.com/sykline/p/10354643.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!