直觀做法:拓撲排序
巧妙做法:根據某個任務的前驅標號必定比其小,可以不斷地動態更新每個任務完成的最終時間。
// 拓撲排序
#include
#include
#include
#include
#define maxn 10010
#define maxm 200010
using
namespace std;
int n,u,v,w,cnt,in[maxn]
,head[maxn]
,mx[maxn]
,res,t[maxn]
;queue<
int> q;
struct edgeedge[maxm]
;void
addedge
(int u,
int v)
void
topo()
}for
(int i=
1;i<=n;i++
)res=
max(res,mx[i]);
}int
main()
}topo()
;printf
("%d"
,res)
;return0;
}
// 不用拓撲排序的巧妙做法
#include
#include
#define maxn 10010
using
namespace std;
int n,len,u,v,res[maxn]
,ans;
intmain()
printf
("%d\n"
,ans)
;return0;
}
洛谷 P1113 雜務 簡單拓撲排序
洛谷 p1113 雜務 簡單拓撲排序 基本就是一道拓撲排序裸題。include include include include include include include include define max 10005 define inf 0x3f3f3f3f typedef long lo...
洛谷 P1113 雜務
一看見有序我們就想到了dag圖,於是用topsort做,對於每乙個加入佇列的頂點,都用它的時間去更新它所指向的點的時間,本質上仍是dp的思想,dp i max ti i j i include include include include include include include using...
洛谷 P1113 雜務 vector
本題說有些雜務是有前提條件的,而有乙個特性就是某個雜務的前提一定在這個雜務前面輸入,那麼,這個題就瞬間淪為了黃題.對於那些有前提條件的雜務,我們只需要找它的前提條件中最晚完成的那個加上自己的時間就是這個雜務最早完成的時間.再在全部雜務中找最晚的那個,就是答案.1 include2 include3 ...