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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

关于拓扑排序的问题-P3116 [USACO15JAN]会议时间Meeting Time

發布時間:2023/12/13 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于拓扑排序的问题-P3116 [USACO15JAN]会议时间Meeting Time 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

https://www.luogu.org/problem/show?pid=3116
這道題目很水啊,但是我沒有1A,而且wa了好多;
題目意思我就不講了;
反正就是一個拓撲序dp;
但是這道題目規定了起點是1;
所以我一開始直接把1放進隊列里然后拓撲;
就哇了;
原因很簡單;
除了1以外,還有很多入度為0的點;
(當然1的入度可能不為0,沒關系)
如果我直接從1遍歷;
就會導致有些點的入度永遠不為0;
所以我們要先吧把的入度==0的非1點先跑一遍拓撲;
跑完后,整個圖只有1是入度為0的了;
這樣再從1開始跑;

#include<cstdio>//cfb #include<iostream> #include<cstring> using namespace std; struct cs{int to,next,A,B;}a[100001]; int head[101],s[101],q[105]; bool aa[101][20001],bb[101][20001]; int n,m,x,y,z,A,B,ll,l,r; void init(int x,int y,int A,int B){ll++;a[ll].to=y;a[ll].A=A;a[ll].B=B;a[ll].next=head[x];head[x]=ll; } int main() {scanf("%d%d",&n,&m);for(int i=1;i<=m;i++){scanf("%d%d%d%d",&x,&y,&A,&B);init(x,y,A,B);s[y]++;}for(int i=2;i<=n;i++)if(!s[i])q[++r]=i;while(r>l){x=q[++l];for(int k=head[x];k;k=a[k].next){y=a[k].to;if(!--s[y])q[++r]=y;}}q[1]=1;aa[1][0]=bb[1][0]=1;r=1; l=0;while(r>l){x=q[++l];for(int k=head[x];k;k=a[k].next){y=a[k].to;s[y]--;if(!s[y])q[++r]=y;for(int i=0;i<=10000;i++){if(aa[x][i])aa[y][i+a[k].A]=1;if(bb[x][i])bb[y][i+a[k].B]=1;}}}for(int i=0;i<=10000;i++)if(aa[n][i]&&bb[n][i]){printf("%d",i);return 0;}printf("IMPOSSIBLE"); }

轉載于:https://www.cnblogs.com/largecube233/p/6797930.html

總結

以上是生活随笔為你收集整理的关于拓扑排序的问题-P3116 [USACO15JAN]会议时间Meeting Time的全部內容,希望文章能夠幫你解決所遇到的問題。

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