日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

EOJ_1102_任务调度问题

發布時間:2024/4/11 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 EOJ_1102_任务调度问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
//因為N<=100 所以邊數可能<=100*100(每個點和其他99個點相連),邊的內存不夠,可能會爆棧 #include<bits/stdc++.h>using namespace std;#define MAXN 10100 #define MAXM 10001typedef struct {int t_ver, h_ver; }E_NODE;//用于輸入有向邊的結構typedef struct vl_node {int ver;vl_node* link; }VL_NODE;//用于建立鄰接鏈表,定義鏈表中的一個結點的結構typedef struct ch_node {int count;VL_NODE* head; }CH_NODE;//鄰接鏈表的頭節點E_NODE e[MAXN]; CH_NODE ch[MAXN]; int tpv[MAXN]; int n,m;void creat_adj_list(int n, int m, E_NODE e[], CH_NODE ch[]) {//創建鄰接鏈表int i,u,v;VL_NODE* p;for(i = 1 ; i <= n ; i++){ ch[i].count = 0;ch[i].head = NULL;}for(i = 1 ; i <= m ; i++){u = e[i].t_ver;v = e[i].h_ver;p = (VL_NODE*) malloc(sizeof(VL_NODE));p->ver = v;p->link = ch[u].head;ch[u].head = p;(ch[v].count)++;} }int topol_order(int n) {int i,j,k;int top = 0;VL_NODE* t;for(i = 1 ; i <= n ; i++){if(ch[i].count == 0){ch[i].count = top;top = i;}}i = 0;while(top != 0){j = top;top = ch[top].count;tpv[++i] = j;t = ch[j].head;while(t != NULL){k = t->ver;if(--(ch[k].count) == 0){ch[k].count = top;top = k;}t = t->link;}}return i; }int main() {m = 1;cin >> n;for(int i = 1 ; i <= n ; i++){int count;cin >> count;if(!count) continue;else{for(int j = 0 ; j < count ; j++){int tmpVertex;cin >> tmpVertex;e[m].t_ver = tmpVertex;e[m++].h_ver = i;}}}m--;creat_adj_list(n,m,e,ch);cout << (topol_order(n) >= n) << endl;}

總結

以上是生活随笔為你收集整理的EOJ_1102_任务调度问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。