hdu-6165(tarjan+topusort)

題意:一個有向圖,無自環,無重邊,讓你判斷這個圖內的任意兩點是否有路;

解題思路:首先,判斷兩個點是否可達一般用出入度來判斷,如果在拓撲排序中同時有兩個及以上入度同時為零的點,那么,這些入度的為零的點肯定不可達,因為沒有路徑指向它;然后就是簡化圖了,一個環的點肯定可達,所以縮下點,再拓撲排序下;

代碼:

#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
#include<cstdio>
#include<cstring>
#define maxn 10005
using namespace std;
struct Edge
{int to;int next;
}edge[maxn];
struct node
{int x;int y;
}a[maxn];
int low[maxn];
int dfn[maxn];
int instack[maxn];
int visit[maxn];
int sccno[maxn];
int cnt;
int step;
int index;
int scc_cnt;
int head[maxn];
int indeg[maxn];
int indegree[maxn];
vector<int>scc[maxn];
void add(int u,int v)
{edge[cnt].next=head[u];edge[cnt].to=v;head[u]=cnt++;
}
void tarjan(int u)
{low[u]=dfn[u]=++step;instack[++index]=u;visit[u]=1;for(int i=head[u];i!=-1;i=edge[i].next){if(!dfn[edge[i].to]){tarjan(edge[i].to);low[u]=min(low[u],low[edge[i].to]);}else if(visit[edge[i].to]){low[u]=min(low[u],dfn[edge[i].to]);}}if(low[u]==dfn[u]){scc_cnt++;scc[scc_cnt].clear();do{scc[scc_cnt].push_back(instack[index]);sccno[instack[index]]=scc_cnt;visit[instack[index]]=0;index--;}while(u!=instack[index+1]);}return;
}
void init()
{memset(head,-1,sizeof(head));cnt=step=index=0;scc_cnt=0;memset(visit,0,sizeof(visit));memset(low,0,sizeof(low));memset(dfn,0,sizeof(dfn));memset(indegree,0,sizeof(indegree));
}
int topusort()
{int flag=0;queue<int>q;while(!q.empty())q.pop();for(int i=1;i<=scc_cnt;i++){indeg[i]=indegree[i];if(indeg[i]==0)q.push(i);}while(!q.empty()){if(q.size()>=2)flag=1;int temp=q.front();q.pop();for(int j=0;j<scc[temp].size();j++){for(int i=head[scc[temp][j]];i!=-1;i=edge[i].next){if(sccno[edge[i].to]!=temp){indeg[sccno[edge[i].to]]--;if(indeg[sccno[edge[i].to]]==0)q.push(sccno[edge[i].to]);}}}}return flag;
}
int main()
{int n,m;int x,y;int t;scanf("%d",&t);while(t--){init();scanf("%d%d",&n,&m);for(int i=1;i<=m;i++){scanf("%d%d",&a[i].x,&a[i].y);add(a[i].x,a[i].y);}for(int i=1;i<=n;i++)if(!dfn[i])tarjan(i);for(int i=1;i<=m;i++)if(sccno[a[i].x]!=sccno[a[i].y])indegree[sccno[a[i].y]]++;int ans=topusort();if(ans==1)printf("Light my fire!\n");elseprintf("I love you my love and our love save us!\n");}
}

  

轉載于:https://www.cnblogs.com/huangdao/p/8620088.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/250736.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/250736.shtml
英文地址,請注明出處:http://en.pswp.cn/news/250736.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

OPENCV-7 學習筆記

OPENCV-7 學習筆記 轉換圖像尺寸 resize函數。這是最直接的方式&#xff0c;yrUp( )、pyrDown( )函數。即圖像金字塔相關的兩個函數&#xff0c;對圖像進行向上采樣&#xff0c;向下采樣的操作。 圖像金字塔 類似于金字塔的形狀&#xff0c;將原始圖像以金字塔形狀的分辨率…

雜項:E-Learning

ylbtech-雜項&#xff1a;E-Learning1.返回頂部 1、E-Learning&#xff1a;英文全稱為&#xff08;Electronic Learning&#xff09;&#xff0c;中文譯作“數字&#xff08;化&#xff09;學習”、“電子&#xff08;化&#xff09;學習”、“網絡&#xff08;化&#xff09;學…

css --- flex布局的應用(between)

between 想把發布時間放在左邊,點擊放在右邊 頁面結構如下: 可以看到發布時間和點擊是在類 .mui-ellipsis 下.使用css3的 flex 布局中的: space-between .mui-ellipsis{display: flex;justify-content: space-between; }

WeUI

介紹&#xff1a; WeUI是微信設計團隊為微信網站開發量身定做的微信類UI界面&#xff0c;旨在改善和規范微信用戶體驗。包括組分如button&#xff0c;cell&#xff0c;dialog&#xff0c;progress&#xff0c;toast&#xff0c;article&#xff0c;actionsheet&#xff0c;icon…

php中的json

php中的json函數主要有三個&#xff1a; 函數描述json_encode()對變量進行 JSON 編碼json_decode對 JSON 格式的字符串進行解碼&#xff0c;轉換為 PHP 變量json_last_error返回最后發生的錯誤 認識前提&#xff1a; {}&#xff0c;花括號代表包裝的是一個對象數據&#xff0…

vue --- 全局配置過濾函數,使用moment函數來格式化時間

效果1 YYYY-MM-DD 效果2 YYYY-MM-DD HH:mm:ss 配置注意事項 由于時間格式化,在大多數頁面中都會用到,因此建議配置在全局中 使用moment函數 -> http://momentjs.cn/ npm 安裝 # 命令行 cnpm i moment -S在全局中配置 // main.js import moment from momentVue.f…

2018ICPC南京賽區網絡賽J Sum(素數篩+找規律)

素數篩鏈接&#xff1a;https://blog.csdn.net/dl962454/article/details/76595623 【題意】 f(i)&#xff1a;能拆成兩個數的乘積&#xff0c;并且這兩個數要求沒有平方因子&#xff0c;并且兩個數的位置互換算兩種方案。 最后求f(1)f(2)f(3)...f(n&#xff09;。 【解題思路】…

[UE4]C++中extern關鍵字淺談

變量聲明和變量是有區別的 extern int i; //只是聲明i而非定義i int j; //聲明而且還定義了j 任何一個顯式初始化的聲明都將成為定義&#xff0c;而不管有沒有extern&#xff0c;extern語句一旦變量賦予了初始值就變成了定義。 extern double pi3.1415926; //定義 stat…

PHP 計算兩個兩個文件的相對路徑

例&#xff1a; a‘/a/b/c/d/e.php′;a = ‘/a/b/c/d/e.php’; b ‘/a/b/12/34/c.php’; 二者的相對路徑結果為&#xff1a;/a/b/12/34/../../c/d/e.php //計算出$b相對于$a的相對路徑: function getRelativePath($a,$b){$returnPath array(dirname($b));$arrA explode(…

vue --- 使用vue-router獲取帶參數的路由

希望的效果如下: 2個路由: 點擊如下 步驟. 使用 router-link 來指定路由路徑在router.js中指定 路徑的 事件處理函數(對應的組件)創建對應的組件 router-link 找到一個區別各個列表的屬性(id),將其作為參數傳遞到路由中to是vue-router中用來綁定路由的屬性由于需要進行計…

.Net Core2.*學習手冊

1.net core 基礎知識解析(創建一個.net core網站)(視頻錄制) 1.1 Startup解析(沒寫)   1.2 目錄結構分析(沒寫)   1.3 使用靜態文件(沒寫)   1.4 Controller(沒寫)   1.5 Razor頁面(沒寫) 1.6.net core appsetting/獲取配置文件   2.創建.net core項目 2.1 創建一個項…

java中static詳解

這個博主寫的總結很好,這里附上鏈接http://www.cnblogs.com/dolphin0520/p/3799052.html 下面進行簡要總結: 在《Java編程思想》P86頁有這樣一段話&#xff1a; “static方法就是沒有this的方法。在static方法內部不能調用非靜態方法&#xff0c;反過來是可以的。而且可以在沒有…

PHP 實現中文截取無亂碼的方法

PHP 實現中文截取無亂碼的方法 需知&#xff1a; 中文字符在gbk編碼下為2個字符&#xff0c;utf-8下為3個字符中文字符的ASCII值是從0xa0后開始的通過ord()函數可以返回字符串中第一個字符的ASCII值&#xff0c;chr()函數作用相反 方法&#xff1a; function GBsubstr($str…

vue --- 全局注冊子組件,并導入全局的子組件

假設: 需要一個評論的模塊comment由于comment在多個頁面中可能會復用.于是創建一個comment.vue 步驟: 創建comment.vue在需要引用的位置使import comment from ../subcomponent/Comment.vue 導入子組件在Vue實例中使用components屬性注冊注冊的規則: “comment-box” : comm…

7. 反轉整數

7. 反轉整數 描述 給定一個 32 位有符號整數&#xff0c;將整數中的數字進行反轉。 示例 示例 1: 輸入: 123 輸出: 321 示例 2: 輸入: -123 輸出: -321 示例 3: 輸入: 120 輸出: 21 注意: 假設我們的環境只能存儲 32 位有符號整數&#xff0c;其數值范圍是 [?2^31, 2^31 ? 1]…

Laravel框架中的路由和控制器

路由 簡介&#xff1a; 將用戶的請求轉發給相應的程序進行處理作用&#xff1a;建立url和程序之間的映射請求類型&#xff1a;get、post、put、patch、delete目錄&#xff1a;app/http/routes.php基本路由&#xff1a;接收單種請求類型 //get請求 Route::get(hello1,function(…

小朋友學C++(1)

Hello World! 在學C之前&#xff0c;最好先學習一下C語言 讓我們先運行一段簡單的代碼&#xff0c;編譯器可以使用 在線C編譯器 或 Xcode(蘋果系統) 或Dev C&#xff08;Windows系統&#xff09;。 #include <iostream> using namespace std; int main() { cout <<…

mysql_表_操作

1、創建表 # 基本語法&#xff1a; create table 表名(列名 類型 是否可以為空 默認值 自增 主鍵&#xff0c;列名 類型 是否可以為空 )ENGINEInnoDB DEFAULT CHARSETutf8not null # 不可以為空 default 1 # 默認值為1 auto_increment # 自增 primary …

css --- 手機端,留言模塊的樣式

效果如下: 代碼: 說明:用到了mint-ui,需要先安裝mt-button的導入: import { Button } from ‘mint-ui’mt-button的使用: Vue.component(Button.name, Button)更多 http://mint-ui.github.io/ // comment.vue <template><div class"comment-container">…

Laravel 中的 視圖和模型

視圖 簡介&#xff1a;視圖包含了應用程序渲染的HTML數據&#xff0c;并將應用程序的顯示邏輯與控制邏輯有效的分離開。在Laravel中&#xff0c;視圖被保存在resources/views目錄中。 php //數組中的內容可以表示在視圖中調用數組&#xff0c;可以用echo $name得到name的值 …