晴神機試模擬題選解 1044 關鍵路徑

2021-09-26 22:38:30 字數 1714 閱讀 9364

題目:

給定乙個有n個頂點、m條邊的有向圖,頂點下標為從1到n,每條邊都有邊權。判斷這個有向圖是否是有向無環圖,如果是的話,請處理k個查詢,每個查詢為圖中的一條邊,求這條邊的最早發生時間和最晚發生時間。最後再輸出圖中的所有關鍵路徑。

輸入

每個輸入檔案中一組資料。

第一行為兩個整數n、m,表示有向無環圖的頂點數和邊數(1<=n<=1000, 0<=m<=n*(n-1)),頂點編號為從1到n。

接下來m行,每行為三個正整數u、v、w(1<=u,v<=n,0然後是乙個正整數k(1<=k<=1000),表示查詢個數。

接著是k行,每行為兩個正整數u、v,分別表示查詢邊的起點和終點。資料保證查詢邊一定是圖上存在的邊。

輸出

如果給出的圖不是有向無環圖,那麼在一行裡輸出no,後面的查詢結果和關鍵路徑均不需要輸出;

如果給出的圖是有向無環圖,那麼在一行裡輸出yes,接著輸出下面的內容:

每個查詢一行,輸出查詢邊的最早發生時間和最晚發生時間;

之後一行輸出乙個整數:關鍵路徑上的邊權之和;

最後若干行輸出所有關鍵路徑,每行表示其中一條,格式為用->連線的頂點編號。注意,如果有兩條關鍵路徑a[1]->a[2]->…->a[k]->a[k+1]->…與b[1]->b[2]->…->b[k]->[k+1]->…,滿足a[1]==b[1]、a[2]==b[2]、…、a[k]==b[k]、a[k+1]sample input 1

4 51 2 3

1 3 2

1 4 5

2 4 1

3 4 3

21 3

2 4sample output 1

yes0 0

3 45

1->3->4

1->4

sample input 2

3 31 2 3

2 3 1

3 2 2

21 2

2 3sample output 2

noac**:

#include using namespace std;

const int maxn=1111;

struct node;

vectorg[maxn];

vectortoporder,pre[maxn],path;

int e[maxn][maxn],l[maxn][maxn];

int n,m,ed,st,maxlen=-1,ind[maxn],ve[maxn],vl[maxn],origin[maxn];

bool istoplogical()

} if(toporder.size()==n) return true;

else return false;

}void dfs(int u)

); }

if(istoplogical())

printf("%d\n",maxlen);

for(int i=1;i<=n;i++) if(origin[i]==0&&pre[i].size()!=0) dfs(i);

} else printf("no\n");

return 0;

}

華為機試 模擬記憶體分配

模擬乙個連續的記憶體塊,其大小固定為100位元組 1.使用者輸入 request 10 表示從記憶體中分配乙個連續的大小為10位元組的空間,當分配成功時,輸出記憶體區塊的首位址,分配失敗 記憶體空間不足 時輸出 error 2.使用者輸入 release 0 表示釋放首位址為0所對應的區塊,如果不存...

華為模擬機試 C 題解

計算a b的和 每行包含兩個整數a和b 對於每行輸入對應輸出一行a和b的和 輸入1 5輸出 6 includeusing namespace std int main 參考 c eof是個什麼東西?長度為n的陣列亂序存放著0至n 1.現在只能進行0與其他數的交換,完成以下函式 交換陣列裡n和0的位置...

higan bsnes 遊戲模擬器的編譯和試玩

higan 是一款開源的遊戲模擬器實現,這裡直接引用英文介紹 higan formerly bsnes is a nintendo multi system emulator that began development on 2004 10 14.it currently supports the...