2018 8 10T2(縮點,拓撲排序,最長路)

2021-08-23 14:32:17 字數 2118 閱讀 4234

描述

小a在2023年掌握了穿越時間的科技,他想要回歸遙遠的2023年來看一看。

我們定義「時間線」是長度恰好為 n ,僅由 abcd 四個大寫字母組成的字串。

設某個時間線為 s,小a可以用以下兩種方式修改時間線:

交換 s 中相鄰兩個字元。

使用某種轉移。乙個轉移是兩個長度不超過 n的等長字串 (ai,bi),可以把 s 中某個子串 ai 替換成 bi。

小a自然能隨意行走於時間線上,但他想享受這躍遷的過程。他想考考你:初始的時間線任選,任意操作,在任意一條時間線結束,途中經過的不同時間線數量最多是多少?

注意可以經過重複的時間線,但只會計入一次答案。

輸入格式

第一行兩個數 n , m,表示時間線的長度和轉移的個數。

後面 m 行,每行兩個等長字串 ai,bi,表示乙個轉移。

輸出格式

一行,乙個整數表示最大答案。

樣例1

樣例輸入1

2 3

a b

a c

d d

樣例輸出1

5樣例解釋1

一種最優方案:aa→ab→ba→bc→cb

限制與約定

對於 30% 的資料, n≤5, m≤5。

對於 50% 的資料, n≤10, m≤30。

對於 100% 的資料, n≤30, m≤50。

時間限制:2s

空間限制:512mb

一種很顯然的暴力就是記錄狀態,然後根據給定的條件連邊,tarjan縮點之後求最長路

常數寫得好有60分

實際上有了相鄰轉移之後我們發現,如果a,b,c,d的個數都確定,他能通過相鄰交換轉移到任意狀態

那我們就可以根據a,b,c,d的個數設計狀態,大力算出每個點的權值再重複上述操作即可

#include

using

namespace

std;

#define rep(i,j,k) for(int i = j;i <= k;++i)

#define repp(i,j,k) for(int i = j;i >= k;--i)

#define ll long long

int n , m;

int id[31][31][31][31] , tot , tt;

int linkk[6100] , t , du[6100];

int dfn[6100] , low[6100] , cnt , cor[6100] , totc;

ll a[6100] , v[6100];

ll dp[6100];

ll jc[30];

struct nodee[181000];

int read()while( c >= '0' && c <= '9' ) sum = sum * 10 + c - 48 , c = getchar();if(flag) return sum;else

return -sum;}

ll calc(int a,int b,int c)

return sum;

}void pre()

char in[40];

void insert(int x,int y)

void init()

}return;

}stack

st;bool f[6100];

void tarjan(int x)

else

if(f[y]) low[x] = min(low[x] , dfn[y]);

}if(low[x] == dfn[x])

return;

}void sd()

return;

}queue

q;ll ans = 0;

void topsort()

q.pop();

}return;

}int main()

POJ2762 tarjan縮點 拓撲排序

有向圖n 1000 m 6000,如果圖中任意兩點u,v 均有u可達v或v可達u,輸出yes,否則輸出no 嘛,強連通分量內的點肯定互相可達 對於縮點之後的dag,怎麼判呢?如果一開始就有多個入度為0的點,那麼就是no 交一發wa了 這時候就要想反例了 發現有一種情況也是no 比如1 2 1 3,2...

道路與航線(最短路 縮點 拓撲排序)

題目描述 農夫約翰正在乙個新的銷售區域對他的牛奶銷售方案進行調查。他想把牛奶送到t個城鎮,編號為1 t。這些城鎮之間通過r條道路 編號為1到r 和p條航線 編號為1到p 連線。每條道路 i 或者航線 i 連線城鎮ai到bi,花費為ci。對於道路,0 ci 10,000 然而航線的花費很神奇,花費ci...

模擬7 16 通訊(tarjan縮點加拓撲排序)

這題確實水,純板子,考試意外出錯,只拿了暴力分qaq tarjan縮點加上拓撲排序,注意這裡求最短路徑時不能用最小生成樹 因為是單向邊,不然就可能不是乙個聯通圖了.1 include2 include3 include4 include 5 include6 include7 include8 in...