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