sicily 有向图边的分类

http://soj.sysu.edu.cn/show_problem.php?pid=1005&cid=1779

 1 #include <bits/stdc++.h>
 2
 3 using namespace std;
 4
 5 int graph[101][101];
 6 int kind[101][101];
 7 int vis[101];
 8 int pre[101];
 9 int post[101];
10
11 int n, m;
12 int ans=0;
13 int flag;
14 int tag;
15
16 void dfs(int x)
17 {
18     pre[x] = ++tag;
19     for(int i=1; i<=n; i++)
20     {
21         if(graph[x][i])
22         {
23             if(pre[i] == 0)
24             {
25                 kind[x][i] = 1;
26                 dfs(i);
27             }
28             else
29             {
30                 if(post[i] == 0)
31                 {
32                     kind[x][i] = 3;
33                     flag=0;
34                 }
35
36                 else if(pre[i] > pre[x])
37                     kind[x][i] = 2;
38                 else
39                     kind[x][i] = 4;
40             }
41         }
42     }
43     post[x] = ++tag;
44 }
45
46 int main()
47 {
48     int ca;
49     while(cin >> n >> m)
50     {
51         tag=0;
52         flag=1;
53         memset(graph, 0, sizeof(graph));
54         memset(vis, 0, sizeof(vis));
55         memset(kind, 0, sizeof(kind));
56         for(int i=0; i<m; i++)
57         {
58             int u, v;
59             cin >> u >> v;
60             graph[u][v]=1;
61         }
62         dfs(1);
63         int q;
64         cin >> q;
65         for(int i=0; i<q; i++)
66         {
67             int u, v;
68             cin >> u >> v;
69             cout << "edge (" << u << "," << v << ") is ";
70             if(kind[u][v] == 1)
71                 cout << "Tree Edge" << endl;
72             if(kind[u][v] == 2)
73                 cout << "Down Edge" << endl;
74             if(kind[u][v] == 3)
75                 cout << "Back Edge" << endl;
76             if(kind[u][v] == 4)
77                 cout << "Cross Edge" << endl;
78         }
79     }
80     return 0;
81 }
时间: 2024-08-27 21:22:17

sicily 有向图边的分类的相关文章

(转)sicily题目分类

Sicily题目分类 ·         [数据结构/图论] 1310 Right-Heavy Tree   笛卡尔树相关,复杂度O(N)或O(NlogN). ·1426 Phone List         电话号码前缀检索,trie树相关. ·1443 Printer Queue      基本队列操作. ·1149 等价表达式         判断表达式是否等价(递归求解) ·1136 山海经             n长序列里求m次区间询问的最大连续子区间和.线段树/RMQ ·1252

编程题目分类(剪辑)

1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. 模拟 12. 算术与代数 13. 组合问题 14. 数论 15. 网格,几何,计算几何 [编程入门] PC 110101, uva 100, The 3n+1 problem, 难度 1 PC 110102, uva 10189, Minesweeper, 难度 1 PC 110103, uva 10137, The T

数据结构 1、概述 特性、分类、复杂性分析

数据结构是描述非数值计算再实体中的数学模型以及在计算机中的表示方法,以及这些模型进行的操作如何在计算机中中进行操作 基本概念: 数据:所有能被输入到计算机中,且能被计算机处理的符号的集合---是计算机操作对象的总称 数据结构的逻辑组织 线性结构:线性表(表.栈.队列.串等) 非线性结构:  树(二叉树,Huffman树,二叉索引树等) 图(有向图,无向图等) 图>树>二叉树>线形图     (>包含) 数据结构的存储结构 逻辑结构到物理内存的映射 四类:顺序(存储单元的顺序地址)

ACM知识点分类

ACM知识点分类  (红:完全没听说过 黄:听说过 绿:接触过做过题 蓝:很熟悉刷过专题 紫:见一道秒一道) 第一类:基础算法 (1)     基础算法:枚举,贪心,递归,分治,递推,构造,模拟 (2)     动态规划:背包问题,树形dp,状态压缩dp,单调性优化,插头dp (3)     搜索:dfs,bfs,记忆化搜索,优化与剪枝,双广,A*,IDA*,跳舞链 第二类:数据结构 (1)     简单数据结构:链表,栈和队列,串,树和二叉树,图,排序与检索 (2)     树形结构:线段树,

POJ分类

初期: 一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. (5)构造法.(poj3295) (6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996) 二.图算法: (1)图的深度优先遍历和广度优先遍历. (2)最短路径算法(dijkstra,bellman-ford,floyd,heap+dijkstra) (poj1860,poj3259,p

ACM训练方案-POJ题目分类

ACM训练方案-POJ题目分类 博客分类: 算法 ACM online Judge 中国: 浙江大学(ZJU):http://acm.zju.edu.cn/ 北京大学(PKU):http://acm.pku.edu.cn/JudgeOnline/ 杭州电子科技大学(HDU):http://acm.hdu.edu.cn/ 中国科技大学(USTC):http://acm.ustc.edu.cn/ 北京航天航空大学(BUAA)http://acm.buaa.edu.cn/oj/index.php 南京

《数据挖掘导论》 - 读书笔记(5) - 分类:基本概念、决策树与模型评估 [2016-8-21]

第4章 分类:基本概念.决策树与模型评估 分类任务就是确定对象属于哪个预定义的目标类.分类问题是一个普遍存在的问题,有许多不同的应用.例如:根据电子邮件的标题和内容检查出垃圾邮件,根据核磁共振扫描的结果区分肿瘤是恶性的还是良性的,根据星系的形状对它们进行分析. 本章介绍分类的基本概念,讨论诸如模型的过分拟合等关键问题,并提供评估和比较分类技术性能的方法.尽管本章主要关注一种称作决策树归纳的技术,但是本章讨论的大部分内容也适用于其他的分类技术. 4.1 预备知识 分类任务的输入数据是记录的集合.每

【转】POJ题目分类

初级:基本算法:枚举:1753 2965贪心:1328 2109 2586构造:3295模拟:1068 2632 1573 2993 2996图:最短路径:1860 3259 1062 2253 1125 2240最小生成树:1789 2485 1258 3026拓扑排序:1094二分图的最大匹配:3041 3020最大流的增广路算法:1459 3436数据结构:串:1035 3080 1936排序:2388 2299哈希表和二分查找等高效查找法:3349 3274 2151 1840 2002

PGM学习之二 PGM模型的分类与简介

废话:和上一次的文章确实隔了太久,希望趁暑期打酱油的时间,将之前学习的东西深入理解一下,同时尝试用Python写相关的机器学习代码. 一 PGM模型的分类 通过上一篇文章的介绍,相信大家对PGM的定义和大致应用场景有了粗略的了解.那么接下来我们来深入了解下PGM. 首先要介绍的是Probabilistic models(概率模型),常用来描述不同的随机变量之前的关系,主要针对变量或变量间的相互不确定性的概率关系建模.总的来说,概率模型分为两类: 一类是参数模型-可以用有限个参数进行准确定义 参数