日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

网络流n题

發(fā)布時(shí)間:2024/4/17 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 网络流n题 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

近日好不容易在自救之路寫完暑訓(xùn)遺留下來的網(wǎng)絡(luò)流8題,在此回顧一下。

Going Home?POJ - 2195?

題意:m要去H,一個(gè)H只能容納一個(gè)m,一步一塊錢,問最小花費(fèi)。

思路:最小費(fèi)用最大流的板子題。有博客用了Dijkstra,不過在我看來,存在負(fù)權(quán)邊的圖是不能使用Dijkstra的,所以雖然我曾立誓再也不寫SPFA,現(xiàn)在也不得不屈服了。

1 #include<iostream> 2 #include<algorithm> 3 #include<vector> 4 #include<stack> 5 #include<queue> 6 #include<map> 7 #include<set> 8 #include<cstdio> 9 #include<cstring> 10 #include<cmath> 11 #include<ctime> 12 #define fuck(x) cout<<#x<<" = "<<x<<endl; 13 #define ls (t<<1) 14 #define rs ((t<<1)+1) 15 using namespace std; 16 typedef long long ll; 17 typedef unsigned long long ull; 18 const int maxn = 1024; 19 const int inf = 2.1e9; 20 const ll Inf = 999999999999999999; 21 const int mod = 1000000007; 22 const double eps = 1e-6; 23 const double pi = acos(-1); 24 int n,m; 25 char mp[108][108]; 26 struct node 27 { 28 int x,y; 29 }p1[maxn],p2[maxn]; 30 int Head[maxn],Next[maxn*maxn],v[maxn*maxn],w[maxn*maxn],cap[maxn*maxn],cnt; 31 int t1,t2;int ans; 32 void init() 33 { 34 t1=1;cnt=t2=ans=0; 35 memset(Head,-1,sizeof(Head)); 36 } 37 38 void add(int x,int y,int z,int f){ 39 // cout<<x<<" "<<y<<" "<<z<<endl; 40 v[cnt]=y; 41 w[cnt]=z; 42 cap[cnt]=f; 43 Next[cnt]=Head[x]; 44 Head[x]=cnt++; 45 46 v[cnt]=x; 47 w[cnt]=-z; 48 cap[cnt]=0; 49 Next[cnt]=Head[y]; 50 Head[y]=cnt++; 51 } 52 bool vis[maxn]; 53 int dis[maxn]; 54 int prevv[maxn],preve[maxn]; 55 int s,t; 56 bool spfa() 57 { 58 queue<int>q; 59 memset(vis,0,sizeof(vis)); 60 for(int i=1;i<=t;i++){ 61 dis[i]=inf; 62 } 63 64 dis[s]=0; 65 q.push(s); 66 while(!q.empty()){ 67 int u=q.front(); 68 q.pop(); 69 vis[u]=false; 70 for(int k=Head[u];k!=-1;k=Next[k]){ 71 if(cap[k]&&dis[v[k]]>dis[u]+w[k]){ 72 dis[v[k]]=dis[u]+w[k]; 73 prevv[v[k]]=u; 74 preve[v[k]]=k; 75 76 if(!vis[v[k]]){ 77 vis[v[k]]=true; 78 q.push(v[k]); 79 } 80 } 81 } 82 } 83 if(dis[t]==inf){return false;} 84 else return true; 85 } 86 int min_cost_flow() 87 { 88 while(spfa()){ 89 for(int i=t;i!=s;i=prevv[i]){ 90 int k=preve[i]; 91 cap[k]-=1; 92 cap[k^1]+=1; 93 } 94 ans+=dis[t]; 95 } 96 97 } 98 99 int main() 100 { 101 // ios::sync_with_stdio(false); 102 // freopen("in.txt","r",stdin); 103 104 while(scanf("%d%d",&n,&m)!=EOF&&(n||m)){ 105 init(); 106 for(int i=1;i<=n;i++){ 107 scanf("%s",mp[i]+1); 108 for(int j=1;j<=m;j++){ 109 if(mp[i][j]=='m'){p1[++t1]=node{i,j};} 110 else if(mp[i][j]=='H'){p2[++t2]=node{i,j};} 111 } 112 } 113 s=1;t=t1+t2+1; 114 for(int i=2;i<=t1;i++){ 115 add(s,i,0,1); 116 for(int j=1;j<=t2;j++){ 117 add(i,j+t1,abs(p1[i].x-p2[j].x)+abs(p1[i].y-p2[j].y),inf); 118 } 119 } 120 for(int i=1;i<=t2;i++){ 121 add(i+t1,t,0,1); 122 } 123 124 min_cost_flow(); 125 printf("%d\n",ans); 126 } 127 128 return 0; 129 } View Code

?

Dining??POJ - 3281?

題意:給奶牛做了吃的和喝的,每一頭奶牛都只能接受某些吃的和喝的,問最多能滿足多少奶牛。

思路:拆點(diǎn)。奶牛只能吃一份也只能和一份,那就把它拆成兩點(diǎn),之間的邊容量為一。食物和飲料不用擔(dān)心,從源點(diǎn)或匯點(diǎn)連邊的時(shí)候,控制邊權(quán)為1就可以限制沒份食物或飲料只被吃一次了。

1 #include<iostream> 2 #include<algorithm> 3 #include<vector> 4 #include<stack> 5 #include<queue> 6 #include<map> 7 #include<set> 8 #include<cstdio> 9 #include<cstring> 10 #include<cmath> 11 #include<ctime> 12 #define fuck(x) cout<<#x<<" = "<<x<<endl; 13 #define ls (t<<1) 14 #define rs ((t<<1)+1) 15 using namespace std; 16 typedef long long ll; 17 typedef unsigned long long ull; 18 const int maxn = 20086; 19 const int inf = 2.1e9; 20 const ll Inf = 999999999999999999; 21 const int mod = 1000000007; 22 const double eps = 1e-6; 23 const double pi = acos(-1); 24 int n,F,D; 25 int Head[maxn],Next[maxn],v[maxn],w[maxn],cnt; 26 int s,t; 27 void init() 28 { 29 cnt=0; 30 memset(Head,-1,sizeof(Head)); 31 } 32 33 void add(int x,int y) 34 { 35 // cout<<x<<" "<<y<<endl; 36 v[cnt]=y; 37 Next[cnt]=Head[x]; 38 w[cnt]=1; 39 Head[x]=cnt++; 40 41 v[cnt]=x; 42 Next[cnt]=Head[y]; 43 w[cnt]=0; 44 Head[y]=cnt++; 45 } 46 47 int food(int x) 48 { 49 return 2*n+1+x; 50 } 51 52 int drink(int x) 53 { 54 return 2*n+1+F+x; 55 } 56 57 int nu1(int x) 58 { 59 return x+1; 60 } 61 62 int nu2(int x) 63 { 64 return x+n+1; 65 } 66 67 void build() 68 { 69 s=1;t=drink(D)+1; 70 for(int i=1;i<=F;i++){ 71 add(s,food(i)); 72 } 73 for(int i=1;i<=D;i++){ 74 add(drink(i),t); 75 } 76 for(int i=1;i<=n;i++){ 77 add(nu1(i),nu2(i)); 78 } 79 } 80 81 int vis[maxn],num[maxn]; 82 83 84 bool bfs() 85 { 86 memset(vis,0,sizeof(vis)); 87 for(int i=1;i<=2*n+1+F+D+8;i++){ 88 num[i]=Head[i]; 89 } 90 vis[s]=1; 91 queue<int>q; 92 q.push(s); 93 int r=0; 94 while(!q.empty()){ 95 int u=q.front(); 96 q.pop(); 97 int k=Head[u]; 98 while(k!=-1){ 99 if(!vis[v[k]]&&w[k]){ 100 vis[v[k]]=vis[u]+1; 101 q.push(v[k]); 102 } 103 k=Next[k]; 104 } 105 } 106 return vis[t]; 107 } 108 109 int dfs(int u,int f) 110 { 111 if(u==t){return f;} 112 int &k=num[u]; 113 int sum=0; 114 while(k!=-1){ 115 if(vis[v[k]]==vis[u]+1&&w[k]){ 116 int d=dfs(v[k],min(f,w[k])); 117 f-=d; 118 w[k]-=d; 119 w[k^1]+=d; 120 sum+=d; 121 } 122 k=Next[k]; 123 } 124 return sum; 125 } 126 127 int Dinic() 128 { 129 int ans=0; 130 while(bfs()){ 131 int f; 132 while((f=dfs(s,inf))>0){ 133 ans+=f; 134 } 135 } 136 return ans; 137 } 138 139 140 int main() 141 { 142 // ios::sync_with_stdio(false); 143 // freopen("in.txt","r",stdin); 144 init(); 145 scanf("%d%d%d",&n,&F,&D); 146 for(int i=1;i<=n;i++){ 147 int m1,m2; 148 scanf("%d%d",&m1,&m2); 149 int num; 150 for(int j=1;j<=m1;j++){ 151 scanf("%d",&num); 152 add(food(num),nu1(i)); 153 } 154 for(int j=1;j<=m2;j++){ 155 scanf("%d",&num); 156 add(nu2(i),drink(num)); 157 } 158 } 159 build(); 160 printf("%d\n",Dinic()); 161 return 0; 162 } View Code

?

Power Network?POJ - 1459?

題意:有發(fā)電廠用來發(fā)電,有用戶用來用電,用中間商不賺差價(jià),問電力的最大流量。

思路:好像也是一個(gè)板子題,就是輸入有些許麻煩。

1 #include<iostream> 2 #include<algorithm> 3 #include<vector> 4 #include<stack> 5 #include<queue> 6 #include<map> 7 #include<set> 8 #include<cstdio> 9 #include<cstring> 10 #include<cmath> 11 #include<ctime> 12 #define fuck(x) cout<<#x<<" = "<<x<<endl; 13 #define ls (t<<1) 14 #define rs ((t<<1)+1) 15 using namespace std; 16 typedef long long ll; 17 typedef unsigned long long ull; 18 const int maxn = 30086; 19 const int inf = 2.1e9; 20 const ll Inf = 999999999999999999; 21 const int mod = 1000000007; 22 const double eps = 1e-6; 23 const double pi = acos(-1); 24 25 int n,np,nc,m; 26 int s,t; 27 int Head[maxn],Next[maxn],v[maxn],w[maxn],cnt; 28 29 void init() 30 { 31 s=n;t=n+1; 32 memset(Head,-1,sizeof(Head)); 33 cnt=0; 34 } 35 36 void add(int x,int y,int z) 37 { 38 // cout<<x<<" "<<y<<" "<<z<<endl; 39 if(x==y){return;} 40 v[cnt]=y; 41 w[cnt]=z; 42 Next[cnt]=Head[x]; 43 Head[x]=cnt++; 44 45 v[cnt]=x; 46 w[cnt]=0; 47 Next[cnt]=Head[y]; 48 Head[y]=cnt++; 49 } 50 51 char str[maxn]; 52 int vis[maxn],num[maxn]; 53 54 bool bfs() 55 { 56 memset(vis,0,sizeof(vis)); 57 for(int i=0;i<=t;i++){ 58 num[i]=Head[i]; 59 } 60 vis[s]=1; 61 queue<int>q; 62 q.push(s); 63 int r=0; 64 while(!q.empty()){ 65 int u=q.front(); 66 q.pop(); 67 int k=Head[u]; 68 while(k!=-1){ 69 if(!vis[v[k]]&&w[k]){ 70 vis[v[k]]=vis[u]+1; 71 q.push(v[k]); 72 } 73 k=Next[k]; 74 } 75 } 76 return vis[t]; 77 } 78 79 int dfs(int u,int f) 80 { 81 if(u==t){return f;} 82 int &k=num[u]; 83 int sum=0; 84 while(k!=-1){ 85 if(vis[v[k]]==vis[u]+1&&w[k]){ 86 int d=dfs(v[k],min(f,w[k])); 87 f-=d; 88 w[k]-=d; 89 w[k^1]+=d; 90 sum+=d; 91 } 92 k=Next[k]; 93 } 94 return sum; 95 } 96 97 int Dinic() 98 { 99 int ans=0; 100 while(bfs()){ 101 int f; 102 while((f=dfs(s,inf))>0){ 103 ans+=f; 104 } 105 } 106 return ans; 107 } 108 109 110 111 int main() 112 { 113 // ios::sync_with_stdio(false); 114 // freopen("in.txt","r",stdin); 115 116 while(scanf("%d%d%d%d",&n,&np,&nc,&m)!=EOF){ 117 init(); 118 for(int i=1;i<=m;i++){ 119 scanf("%s",str); 120 int len =strlen(str); 121 int j,num = 0; 122 int x,y,z; 123 for(j=1;j<len;j++){ 124 if(str[j]>='0'&&str[j]<='9'){num=num*10+str[j]-'0';} 125 else break; 126 } 127 x=num;num=0; 128 for(j++;j<len;j++){ 129 if(str[j]>='0'&&str[j]<='9'){num=num*10+str[j]-'0';} 130 else break; 131 } 132 y=num;num=0; 133 for(j++;j<len;j++){ 134 if(str[j]>='0'&&str[j]<='9'){num=num*10+str[j]-'0';} 135 else break; 136 } 137 z=num; 138 add(x,y,z); 139 } 140 141 142 for(int i=1;i<=np;i++){ 143 scanf("%s",str); 144 int len = strlen(str); 145 int j=0,x,y,num=0; 146 for(j++;j<len;j++){ 147 if(str[j]>='0'&&str[j]<='9'){num=num*10+str[j]-'0';} 148 else break; 149 } 150 x=num;num=0; 151 for(j++;j<len;j++){ 152 if(str[j]>='0'&&str[j]<='9'){num=num*10+str[j]-'0';} 153 else break; 154 } 155 y=num;num=0; 156 add(s,x,y); 157 } 158 for(int i=1;i<=nc;i++){ 159 scanf("%s",str); 160 int len = strlen(str); 161 int j=0,x,y,num=0; 162 for(j++;j<len;j++){ 163 if(str[j]>='0'&&str[j]<='9'){num=num*10+str[j]-'0';} 164 else break; 165 } 166 x=num;num=0; 167 for(j++;j<len;j++){ 168 if(str[j]>='0'&&str[j]<='9'){num=num*10+str[j]-'0';} 169 else break; 170 } 171 y=num;num=0; 172 add(x,t,y); 173 } 174 printf("%d\n",Dinic()); 175 } 176 177 return 0; 178 } View Code

?

Escape??HDU - 3605

題意:有很多人想跑路了,可是他們都有自己想去的星球,每個(gè)星球也有自己的容量,問所有人是否都可以去到自己的想去的星球上。

思路:這個(gè)人很多,把相同目的地的人合在一起才行。

1 #include<iostream> 2 #include<algorithm> 3 #include<vector> 4 #include<stack> 5 #include<queue> 6 #include<map> 7 #include<set> 8 #include<cstdio> 9 #include<cstring> 10 #include<cmath> 11 #include<ctime> 12 #define fuck(x) cout<<#x<<" = "<<x<<endl; 13 #define ls (t<<1) 14 #define rs ((t<<1)+1) 15 using namespace std; 16 typedef long long ll; 17 typedef unsigned long long ull; 18 const int maxn = 500086; 19 const int inf = 2.1e9; 20 const ll Inf = 999999999999999999; 21 const int mod = 1000000007; 22 const double eps = 1e-6; 23 const double pi = acos(-1); 24 25 int Head[2000],Next[maxn],v[maxn],w[maxn],cnt; 26 int n,m,s,t; 27 int vis[2000],num[2000]; 28 int sum[1228]; 29 void init() 30 { 31 s=1050+m+1;t=s+1; 32 memset(sum,0,sizeof(sum)); 33 for(int i=0;i<=t;i++){ 34 Head[i]=-1; 35 } 36 cnt=0; 37 } 38 void add(int x,int y,int z) 39 { 40 // cout<<x<<" "<<y<<" "<<z<<endl; 41 if(x==y){return;} 42 v[cnt]=y; 43 w[cnt]=z; 44 Next[cnt]=Head[x]; 45 Head[x]=cnt++; 46 47 v[cnt]=x; 48 w[cnt]=0; 49 Next[cnt]=Head[y]; 50 Head[y]=cnt++; 51 } 52 53 bool bfs() 54 { 55 memset(vis,0,sizeof(vis)); 56 for(int i=0;i<=t;i++){ 57 num[i]=Head[i]; 58 } 59 vis[s]=1; 60 queue<int>q; 61 q.push(s); 62 int r=0; 63 while(!q.empty()){ 64 int u=q.front(); 65 q.pop(); 66 int k=Head[u]; 67 while(k!=-1){ 68 if(!vis[v[k]]&&w[k]){ 69 vis[v[k]]=vis[u]+1; 70 q.push(v[k]); 71 } 72 k=Next[k]; 73 } 74 } 75 return vis[t]; 76 } 77 78 int dfs(int u,int f) 79 { 80 if(u==t){return f;} 81 int &k=num[u]; 82 int sum=0; 83 while(k!=-1){ 84 if(vis[v[k]]==vis[u]+1&&w[k]){ 85 int d=dfs(v[k],min(f,w[k])); 86 f-=d; 87 w[k]-=d; 88 w[k^1]+=d; 89 sum+=d; 90 } 91 k=Next[k]; 92 } 93 return sum; 94 } 95 96 int Dinic() 97 { 98 int ans=0; 99 while(bfs()){ 100 int f; 101 while((f=dfs(s,inf))>0){ 102 ans+=f; 103 } 104 } 105 return ans; 106 } 107 108 int plant(int x) 109 { 110 return x+1025; 111 } 112 113 int main() 114 { 115 // ios::sync_with_stdio(false); 116 // freopen("in.txt","r",stdin); 117 118 while(scanf("%d%d",&n,&m)!=EOF){ 119 init(); 120 for(int i=0;i<n;i++){ 121 int num = 0,x; 122 for(int j=0;j<m;j++){ 123 scanf("%d",&x); 124 num=num*2+x; 125 } 126 sum[num]++; 127 } 128 for(int i=0;i<1024;i++){ 129 add(s,i,sum[i]); 130 } 131 for(int i=0;i<1024;i++){ 132 if(sum[i]){ 133 int ss = i; 134 for(int j=m;j>=1;j--){ 135 if(ss&1){add(i,plant(j),inf);} 136 ss>>=1; 137 } 138 } 139 } 140 for(int i=1;i<=m;i++){ 141 int num = 0; 142 scanf("%d",&num); 143 add(plant(i),t,num); 144 } 145 if(Dinic()==n){printf("YES\n");} 146 else printf("NO\n"); 147 } 148 149 return 0; 150 } View Code

?

ACM Computer Factory?POJ - 3436?

題意:造電腦了,每一個(gè)工廠有若干入狀態(tài)和一個(gè)出狀態(tài),問整個(gè)系統(tǒng)的最大產(chǎn)量。

思路:枚舉,如果有某家工廠的某個(gè)入狀態(tài)和另一家工廠的出廠狀態(tài)相同,那就連一條邊。題目要求輸出路徑,整個(gè)在Dinic的DFS里面加記錄一下就行了,這個(gè)題是有SPJ的,所以可以寫的隨心一點(diǎn)

1 #include<iostream> 2 #include<algorithm> 3 #include<vector> 4 #include<stack> 5 #include<queue> 6 #include<map> 7 #include<set> 8 #include<cstdio> 9 #include<cstring> 10 #include<cmath> 11 #include<ctime> 12 #define fuck(x) cout<<#x<<" = "<<x<<endl; 13 #define ls (t<<1) 14 #define rs ((t<<1)+1) 15 using namespace std; 16 typedef long long ll; 17 typedef unsigned long long ull; 18 const int maxn = 100086; 19 const int inf = 2.1e9; 20 const ll Inf = 999999999999999999; 21 const int mod = 1000000007; 22 const double eps = 1e-6; 23 const double pi = acos(-1); 24 int p,n; 25 int vis[155],num[155]; 26 int Head[155],Next[maxn],v[maxn],w[maxn],cnt; 27 vector<int>num1[155]; 28 int num2[155]; 29 int s,t,flows; 30 void init() 31 { 32 memset(Head,-1,sizeof(Head)); 33 s=2*n+1;t=s+1; 34 } 35 void add(int x,int y,int z) 36 { 37 // cout<<x<<" "<<y<<" "<<z<<endl; 38 if(x==y){return;} 39 v[cnt]=y; 40 w[cnt]=z; 41 Next[cnt]=Head[x]; 42 Head[x]=cnt++; 43 44 v[cnt]=x; 45 w[cnt]=0; 46 Next[cnt]=Head[y]; 47 Head[y]=cnt++; 48 } 49 50 bool bfs() 51 { 52 53 memset(vis,0,sizeof(vis)); 54 for(int i=0;i<=t;i++){ 55 num[i]=Head[i]; 56 } 57 vis[s]=1; 58 queue<int>q; 59 q.push(s); 60 int r=0; 61 while(!q.empty()){ 62 int u=q.front(); 63 q.pop(); 64 int k=Head[u]; 65 while(k!=-1){ 66 if(!vis[v[k]]&&w[k]){ 67 vis[v[k]]=vis[u]+1; 68 q.push(v[k]); 69 } 70 k=Next[k]; 71 } 72 } 73 return vis[t]; 74 } 75 struct node 76 { 77 int u,v,w; 78 }; 79 queue<node>q; 80 int anss; 81 int dfs(int u,int f) 82 { 83 if(u==t){return f;} 84 int &k=num[u]; 85 int sum=0; 86 while(k!=-1){ 87 if(vis[v[k]]==vis[u]+1&&w[k]){ 88 int d=dfs(v[k],min(f,w[k])); 89 if(d>0){ 90 if(u!=s&&v[k]!=t&&u>n){ 91 q.push(node{u-n,v[k],d}); 92 anss++; 93 } 94 w[k]-=d; 95 w[k^1]+=d; 96 return d; 97 } 98 } 99 k=Next[k]; 100 } 101 return sum; 102 } 103 int Dinic() 104 { 105 int ans=0; 106 while(bfs()){ 107 int f; 108 while((f=dfs(s,inf))>0){ 109 ans+=f; 110 } 111 } 112 return ans; 113 } 114 int a[15]; 115 int u; 116 void num_dfs(int t,int ans) 117 { 118 if(t==p+1){ 119 num1[u].push_back(ans); 120 return; 121 } 122 if(a[t]==0){ 123 num_dfs(t+1,ans*2); 124 } 125 else if(a[t]==1){ 126 num_dfs(t+1,ans*2+1); 127 } 128 else{ 129 num_dfs(t+1,ans*2); 130 num_dfs(t+1,ans*2+1); 131 } 132 } 133 134 int sta(int x) 135 { 136 return x; 137 } 138 139 int endd(int x) 140 { 141 return x+n; 142 } 143 144 int main() 145 { 146 // ios::sync_with_stdio(false); 147 // freopen("in.txt","r",stdin); 148 149 scanf("%d%d",&p,&n); 150 init(); 151 for(int i=1;i<=n;i++){ 152 num1[i].clear();num2[i]=0; 153 } 154 for(int i=1;i<=n;i++){ 155 scanf("%d",&flows); 156 add(sta(i),endd(i),flows); 157 u=i; 158 for(int j=1;j<=p;j++){ 159 scanf("%d",&a[j]); 160 } 161 num_dfs(1,0); 162 for(int j=1;j<=p;j++){ 163 int h; 164 scanf("%d",&h); 165 num2[i]=num2[i]*2+h; 166 } 167 } 168 for(int i=1;i<=n;i++){ 169 int siz = num1[i].size(); 170 if(num2[i]==(1<<p)-1){ 171 add(endd(i),t,inf); 172 } 173 for(int j=0;j<siz;j++){ 174 if(num1[i][j]==0){add(s,sta(i),inf);} 175 for(int k=1;k<=n;k++){ 176 if(num1[i][j]==num2[k]){ 177 add(endd(k),sta(i),inf); 178 } 179 } 180 } 181 } 182 printf("%d ",Dinic()); 183 printf("%d\n",anss); 184 while(!q.empty()){ 185 printf("%d %d %d\n",q.front().u,q.front().v,q.front().w); 186 q.pop(); 187 } 188 return 0; 189 } View Code

?

Minimum Cost?POJ - 2516

題意:有供貨源給商店老板供貨,每一種商品都有各自的對(duì)于每一個(gè)供應(yīng)商都有其存儲(chǔ)量,對(duì)于每一個(gè)商店都有其需求量,對(duì)于每一對(duì)商店和供應(yīng)商的組合,運(yùn)輸都有其花費(fèi),求最大流量時(shí)的最大花費(fèi)。

思路:每一種商品分別建圖,不然會(huì)TLE,因?yàn)檫吿嗔恕?/p> 1 #include<iostream> 2 #include<algorithm> 3 #include<vector> 4 #include<stack> 5 #include<queue> 6 #include<map> 7 #include<set> 8 #include<cstdio> 9 #include<cstring> 10 #include<cmath> 11 #include<ctime> 12 #define fuck(x) cout<<#x<<" = "<<x<<endl; 13 #define ls (t<<1) 14 #define rs ((t<<1)+1) 15 using namespace std; 16 typedef long long ll; 17 typedef unsigned long long ull; 18 const int maxn = 400086; 19 const int inf = 2.1e9; 20 //const ll Inf = 999999999999999999; 21 //const int mod = 1000000007; 22 //const double eps = 1e-6; 23 //const double pi = acos(-1); 24 25 int n,m,k,ans; 26 int Head[5050*2],Next[maxn],v[maxn],cap[maxn],w[maxn],cnt; 27 bool vis[5050*2]; 28 int dis[5050*2]; 29 int prevv[5050*2]; 30 int preve[5050*2]; 31 int s,t,all; 32 void init() 33 { 34 s=0;t=2*k*(n+m)+1; 35 memset(Head,-1,sizeof(Head)); 36 ans=cnt=0; 37 } 38 39 int sshop(int x,int s) 40 { 41 return 2*k*(x-1)+s; 42 } 43 44 int eshop(int x,int y) 45 { 46 return sshop(x,y)+k; 47 } 48 49 int ssup(int x,int y) 50 { 51 return n*k*2+y+(x-1)*k*2; 52 } 53 54 int esup(int x,int y) 55 { 56 return ssup(x,y)+k; 57 } 58 59 void add(int x,int y,int z,int f){ 60 // cout<<x<<" "<<y<<" "<<z<<" "<<f<<endl; 61 v[cnt]=y; 62 w[cnt]=z; 63 cap[cnt]=f; 64 Next[cnt]=Head[x]; 65 Head[x]=cnt++; 66 67 v[cnt]=x; 68 w[cnt]=-z; 69 cap[cnt]=0; 70 Next[cnt]=Head[y]; 71 Head[y]=cnt++; 72 } 73 74 bool spfa(){ 75 queue<int>q; 76 memset(vis,0,sizeof(vis)); 77 for(int i=0;i<=t;i++){ 78 dis[i]=inf; 79 } 80 81 dis[s]=0; 82 q.push(s); 83 while(!q.empty()){ 84 int u=q.front(); 85 q.pop(); 86 vis[u]=false; 87 for(int k=Head[u];k!=-1;k=Next[k]){ 88 if(cap[k]&&dis[v[k]]>dis[u]+w[k]){ 89 dis[v[k]]=dis[u]+w[k]; 90 prevv[v[k]]=u; 91 preve[v[k]]=k; 92 93 if(!vis[v[k]]){ 94 vis[v[k]]=true; 95 q.push(v[k]); 96 } 97 } 98 } 99 } 100 if(dis[t]==inf){return false;} 101 else return true; 102 }int anss=0; 103 int min_cost_flow(){ 104 while(spfa()){ 105 anss++; 106 for(int i=t;i!=s;i=prevv[i]){ 107 int k=preve[i]; 108 cap[k]-=1; 109 cap[k^1]+=1; 110 } 111 ans+=dis[t]; 112 } 113 return ans; 114 } 115 116 int input1[105][105]; 117 int input2[105][105]; 118 119 120 121 void build(int kk) 122 { 123 init(); 124 for(int i=1;i<=n;i++){ 125 add(sshop(i,kk),eshop(i,kk),0,input1[i][kk]); 126 } 127 for(int i=1;i<=m;i++){ 128 add(ssup(i,kk),esup(i,kk),0,input2[i][kk]); 129 } 130 for(int i=1;i<=n;i++){ 131 add(s,sshop(i,kk),0,inf); 132 } 133 for(int i=1;i<=m;i++){ 134 add(esup(i,kk),t,0,inf); 135 } 136 } 137 138 int main() 139 { 140 // ios::sync_with_stdio(false); 141 // freopen("in.txt","r",stdin); 142 while(scanf("%d%d%d",&n,&m,&k)!=EOF&&(n||m||k)){ 143 init();all=0;anss=0; 144 for(int i=1;i<=n;i++){ 145 for(int j=1;j<=k;j++){ 146 int input; 147 scanf("%d",&input); 148 all+=input; 149 input1[i][j]=input; 150 } 151 } 152 153 for(int i=1;i<=m;i++){ 154 for(int j=1;j<=k;j++){ 155 int input; 156 scanf("%d",&input); 157 input2[i][j]=input; 158 } 159 } 160 int ans=0; 161 for(int i=1;i<=k;i++){ 162 build(i); 163 for(int j=1;j<=n;j++){ 164 for(int s=1;s<=m;s++){ 165 int input; 166 scanf("%d",&input); 167 add(eshop(j,i),ssup(s,i),input,inf); 168 } 169 } 170 ans+=min_cost_flow(); 171 } 172 if(anss!=all)ans=-1; 173 printf("%d\n",ans); 174 } 175 176 return 0; 177 } View Code

?

Cyclic Tour??HDU - 1853?

題意:某個(gè)人要轉(zhuǎn)圈圈,每個(gè)點(diǎn)之走一次,問最小花費(fèi)。

思路:把每個(gè)點(diǎn)拆開(pi1和pi2),有邊的話就建一條pi2到pj1的邊,源點(diǎn)到每個(gè)p1建邊容量為一,花費(fèi)為0,匯點(diǎn)同理,然后網(wǎng)絡(luò)流即可。建圖雖然沒有體現(xiàn)環(huán),但是如果網(wǎng)絡(luò)流跑滿了,就說明每個(gè)點(diǎn)都在環(huán)內(nèi)了(每個(gè)點(diǎn)的出度和入度都是1)

1 #include<iostream> 2 #include<algorithm> 3 #include<vector> 4 #include<stack> 5 #include<queue> 6 #include<map> 7 #include<set> 8 #include<cstdio> 9 #include<cstring> 10 #include<cmath> 11 #include<ctime> 12 #define fuck(x) cout<<#x<<" = "<<x<<endl; 13 #define ls (t<<1) 14 #define rs ((t<<1)+1) 15 using namespace std; 16 typedef long long ll; 17 typedef unsigned long long ull; 18 const int maxn = 100086; 19 const int inf = 2.1e9; 20 const ll Inf = 999999999999999999; 21 const int mod = 1000000007; 22 const double eps = 1e-6; 23 const double pi = acos(-1); 24 int m,n,s,t,ans,anss; 25 int Head[308],Next[maxn],v[maxn],w[maxn],cap[maxn],cnt; 26 bool vis[308]; 27 int dis[308],prevv[308],preve[308]; 28 void init() 29 { 30 anss=0; 31 memset(Head,-1,sizeof(Head)); 32 s=0,t=2*n+1;ans=cnt=0; 33 } 34 void add(int x,int y,int z,int f){ 35 // cout<<x<<C" "<<y<<" "<<z<<" "<<f<<endl; 36 v[cnt]=y; 37 w[cnt]=z; 38 cap[cnt]=f; 39 Next[cnt]=Head[x]; 40 Head[x]=cnt++; 41 42 v[cnt]=x; 43 w[cnt]=-z; 44 cap[cnt]=0; 45 Next[cnt]=Head[y]; 46 Head[y]=cnt++; 47 } 48 49 bool spfa(){ 50 queue<int>q; 51 memset(vis,0,sizeof(vis)); 52 for(int i=0;i<=t;i++){ 53 dis[i]=inf; 54 } 55 56 dis[s]=0; 57 q.push(s); 58 while(!q.empty()){ 59 int u=q.front(); 60 q.pop(); 61 vis[u]=false; 62 for(int k=Head[u];k!=-1;k=Next[k]){ 63 if(cap[k]&&dis[v[k]]>dis[u]+w[k]){ 64 dis[v[k]]=dis[u]+w[k]; 65 prevv[v[k]]=u; 66 preve[v[k]]=k; 67 68 if(!vis[v[k]]){ 69 vis[v[k]]=true; 70 q.push(v[k]); 71 } 72 } 73 } 74 } 75 // fuck(dis[t]) 76 if(dis[t]==inf){return false;} 77 else return true; 78 } 79 int min_cost_flow(){ 80 while(spfa()){ 81 anss++; 82 for(int i=t;i!=s;i=prevv[i]){ 83 int k=preve[i]; 84 cap[k]-=1; 85 cap[k^1]+=1; 86 } 87 ans+=dis[t]; 88 } 89 // fuck(ans) 90 return ans; 91 } 92 93 int main() 94 { 95 // ios::sync_with_stdio(false); 96 // freopen("in.txt","r",stdin); 97 98 while(scanf("%d%d",&n,&m)!=EOF){ 99 init(); 100 for(int i=1;i<=m;i++){ 101 int x,y,z; 102 scanf("%d%d%d",&x,&y,&z); 103 add(x,y+n,z,1); 104 } 105 106 for(int i=1;i<=n;i++){ 107 add(i+n,t,0,1); 108 add(s,i,0,1); 109 } 110 int ans = min_cost_flow(); 111 if(anss!=n){ans=-1;} 112 printf("%d\n",ans); 113 } 114 115 116 117 return 0; 118 } View Code

?

Fox And Dinner?CodeForces - 510E?

題意:n個(gè)數(shù)字,組成若干個(gè)環(huán),相鄰的兩個(gè)數(shù)相加必須是質(zhì)數(shù),輸出組合方式。

思路:和上一題相同,就是跑滿之后才能看出來滿足題意。具體方法是,分為奇數(shù)和偶數(shù),源點(diǎn)到奇數(shù)的權(quán)值為2,偶數(shù)到匯點(diǎn)的權(quán)值是2,如果相加為質(zhì)數(shù),奇數(shù)到偶數(shù)權(quán)值為1.跑滿的話,說明每個(gè)數(shù)旁邊都有兩個(gè)數(shù),滿足題意。然后通過深搜找出途中的環(huán)。因?yàn)闈M足題意,每個(gè)點(diǎn)只有兩個(gè)相鄰的點(diǎn),所以可以無(wú)腦向下搜。注意網(wǎng)絡(luò)流途中的邊權(quán)變化,導(dǎo)致技術(shù)和偶數(shù)的有效邊權(quán)值是不一樣的。

1 #include<iostream> 2 #include<algorithm> 3 #include<vector> 4 #include<stack> 5 #include<queue> 6 #include<map> 7 #include<set> 8 #include<cstdio> 9 #include<cstring> 10 #include<cmath> 11 #include<ctime> 12 #define fuck(x) cout<<#x<<" = "<<x<<endl; 13 #define ls (t<<1) 14 #define rs ((t<<1)+1) 15 using namespace std; 16 typedef long long ll; 17 typedef unsigned long long ull; 18 const int maxn = 100086; 19 const int inf = 2.1e9; 20 const ll Inf = 999999999999999999; 21 const int mod = 1000000007; 22 const double eps = 1e-6; 23 const double pi = acos(-1); 24 int n,s,t; 25 int nums[206]; 26 int vis[maxn],num[maxn]; 27 int prime[maxn],cur; 28 bool check[maxn]; 29 int Head[208],Next[maxn],v[maxn],w[maxn],cnt; 30 31 void init() 32 { 33 memset(Head,-1,sizeof(Head)); 34 cnt=0; 35 s=0,t=n+1; 36 } 37 38 void primes() 39 { 40 for(int i=2;i<20086;i++){ 41 if(!check[i]){ 42 prime[cur++]=i; 43 } 44 for(int j=0;j<cur;j++){ 45 if(i*prime[j]>20086){ 46 break; 47 } 48 check[i*prime[j]]=i; 49 if(i%prime[j]==0){ 50 break; 51 } 52 } 53 } 54 } 55 56 57 58 void add(int x,int y,int z) 59 { 60 // if(x!=s&&y!=t)cout<<x<<" "<<y<<" "<<z<<endl; 61 if(x==y){return;} 62 v[cnt]=y; 63 w[cnt]=z; 64 Next[cnt]=Head[x]; 65 Head[x]=cnt++; 66 67 v[cnt]=x; 68 w[cnt]=0; 69 Next[cnt]=Head[y]; 70 Head[y]=cnt++; 71 } 72 73 bool bfs() 74 { 75 memset(vis,0,sizeof(vis)); 76 for(int i=0;i<=t;i++){ 77 num[i]=Head[i]; 78 } 79 vis[s]=1; 80 queue<int>q; 81 q.push(s); 82 int r=0; 83 while(!q.empty()){ 84 int u=q.front(); 85 q.pop(); 86 int k=Head[u]; 87 while(k!=-1){ 88 if(!vis[v[k]]&&w[k]){ 89 vis[v[k]]=vis[u]+1; 90 q.push(v[k]); 91 } 92 k=Next[k]; 93 } 94 } 95 return vis[t]; 96 } 97 98 int dfs(int u,int f) 99 { 100 if(u==t){return f;} 101 int &k=num[u]; 102 int sum=0; 103 while(k!=-1){ 104 if(vis[v[k]]==vis[u]+1&&w[k]){ 105 int d=dfs(v[k],min(f,w[k])); 106 if(d>0){ 107 w[k]-=d; 108 w[k^1]+=d; 109 return d; 110 } 111 } 112 k=Next[k]; 113 } 114 return sum; 115 } 116 int Dinic() 117 { 118 int ans=0; 119 while(bfs()){ 120 int f; 121 while((f=dfs(s,inf))>0){ 122 ans+=f; 123 } 124 } 125 return ans; 126 } 127 stack<int>st; 128 void dfs(int t) 129 { 130 vis[t]=1; 131 st.push(t); 132 for(int k=Head[t];k!=-1;k=Next[k]){ 133 if(v[k]==0||v[k]==n+1){continue;} 134 if(vis[v[k]]){continue;} 135 if(nums[t]%2==0&&w[k]){dfs(v[k]);} 136 if(nums[t]%2==1&&!w[k]){dfs(v[k]);} 137 } 138 vis[t]=-1; 139 } 140 141 142 queue<int>q[208]; 143 int main() 144 { 145 // ios::sync_with_stdio(false); 146 // freopen("in.txt","r",stdin); 147 148 primes(); 149 scanf("%d",&n); 150 for(int i=1;i<=n;i++){ 151 scanf("%d",&nums[i]); 152 }init(); 153 for(int i=1;i<=n;i++){ 154 if(nums[i]&1){add(s,i,2);} 155 else{add(i,t,2);} 156 for(int j=i+1;j<=n;j++){ 157 if(!check[nums[i]+nums[j]]){ 158 if(nums[i]&1){add(i,j,1);} 159 else{add(j,i,1);} 160 } 161 } 162 } 163 if(Dinic()!=n){printf("Impossible\n");return 0;} 164 165 int numi = 0; 166 memset(vis,0,sizeof(vis)); 167 for(int i=1;i<=n;i++){ 168 if(!vis[i]){ 169 dfs(i);numi++; 170 while(!st.empty()){ 171 q[i].push(st.top()); 172 st.pop(); 173 } 174 } 175 } 176 printf("%d\n",numi); 177 for(int i=1;i<=n;i++){ 178 if(!q[i].empty()){ 179 printf("%d",q[i].size()); 180 while(!q[i].empty()){ 181 printf(" %d",q[i].front()); 182 q[i].pop(); 183 } 184 printf("\n"); 185 } 186 187 } 188 return 0; 189 } View Code

?

以上8題全靠建圖+貼板子,建好了圖就完成了90%。

這就是暑訓(xùn)的8題了。接下來還是暑訓(xùn)網(wǎng)絡(luò)流的題,一共四題,不過被收錄到圖論專題中。

?

Ombrophobic Bovines?POJ - 2391

題意:有奶牛要去避難,有n個(gè)避難所,第i個(gè)避難所已經(jīng)有了ai頭牛,可以容納bi頭牛,從第i個(gè)避難所到第j個(gè)避難所需要花費(fèi)ti時(shí)間,所有奶牛同時(shí)出發(fā),問最小花費(fèi)的時(shí)間。

思路:我一開始想到的是使用最小費(fèi)用最大流,把原來的ans+=dis[t]改成ans=max(ans,dis[t])即可,建圖方式就是拆點(diǎn)(設(shè)為拆成x,y吧),源點(diǎn)到xi容量為ai.費(fèi)用為0,yi到匯點(diǎn)容量為bi,費(fèi)用為0,如果i與j之間有邊,就建邊xi到y(tǒng)j,容量正無(wú)窮,花費(fèi)為所需時(shí)間。但是這樣做是錯(cuò)誤的,原因在于,最小費(fèi)用最大流執(zhí)行過程中,會(huì)優(yōu)先選擇最短的路,也就是說,如果可以留在本地,那么牛一定會(huì)留下來,但這樣不是最優(yōu)解,避難所如果是:

1 0

1 1

1 1

0 1

如果所有路徑距離都是1,那么其實(shí)每頭牛向下走一格才是最優(yōu)解,而不是23的留在原地,1走到4.

所以這題的正解其實(shí)是最短路+二分+最大流。

至于為什么要拆點(diǎn),我記得白書上說,如果要限制點(diǎn)的流量,那么便可以拆點(diǎn),可是這里并沒有限制流量,那么為什么要拆點(diǎn)捏,實(shí)際上是因?yàn)?#xff0c;在二分建圖的過程中,小于mid的邊就被連上了,拆點(diǎn)了的話,可以保證從i到j(luò)的過程沒有經(jīng)過其他的點(diǎn),這樣的mid限制才有意義。這里的沒有經(jīng)過其他的點(diǎn),僅僅是指,在二分建圖過程中,實(shí)際上從邏輯上分析,牛肯定是要經(jīng)過其他的點(diǎn)的。

1 #include<iostream> 2 #include<algorithm> 3 #include<vector> 4 #include<stack> 5 #include<queue> 6 #include<map> 7 #include<set> 8 #include<cstdio> 9 #include<cstring> 10 #include<cmath> 11 #include<ctime> 12 #define fuck(x) cout<<#x<<" = "<<x<<endl; 13 #define ls (t<<1) 14 #define rs ((t<<1)+1) 15 using namespace std; 16 typedef long long ll; 17 typedef unsigned long long ull; 18 const int maxn = 100086; 19 const int inf = 2.1e9; 20 const ll Inf = 999999999999999; 21 //const int mod = 1000000007; 22 //const double eps = 1e-6; 23 //const double pi = acos(-1); 24 ll mp[500][500]; 25 int Head[500],Next[maxn],v[maxn],cnt; 26 int vis[500],num[500]; 27 int num1[500],num2[maxn]; 28 ll w[maxn]; 29 int n,m,s,t; 30 ll all; 31 void init() 32 { 33 all= 0; 34 memset(Head,-1,sizeof(Head)); 35 cnt=0;s=0,t=n*2+1; 36 for(int i=1;i<=n;i++){ 37 for(int j=1;j<=n;j++){ 38 mp[i][j]=Inf; 39 } 40 } 41 } 42 43 void add(int x,int y,int z) 44 { 45 // cout<<x<<" "<<y<<" "<<z<<endl; 46 if(x==y){return;} 47 v[cnt]=y; 48 w[cnt]=z; 49 Next[cnt]=Head[x]; 50 Head[x]=cnt++; 51 52 v[cnt]=x; 53 w[cnt]=0; 54 Next[cnt]=Head[y]; 55 Head[y]=cnt++; 56 } 57 58 bool bfs() 59 { 60 memset(vis,0,sizeof(vis)); 61 for(int i=0;i<=t;i++){ 62 num[i]=Head[i]; 63 } 64 vis[s]=1; 65 queue<int>q; 66 q.push(s); 67 int r=0; 68 while(!q.empty()){ 69 int u=q.front(); 70 q.pop(); 71 int k=Head[u]; 72 while(k!=-1){ 73 if(!vis[v[k]]&&w[k]){ 74 vis[v[k]]=vis[u]+1; 75 q.push(v[k]); 76 } 77 k=Next[k]; 78 } 79 } 80 return vis[t]; 81 } 82 83 ll dfs(int u,ll f) 84 { 85 if(u==t){return f;} 86 int &k=num[u]; 87 ll sum=0; 88 while(k!=-1){ 89 if(vis[v[k]]==vis[u]+1&&w[k]){ 90 ll d=dfs(v[k],min(f,w[k])); 91 if(d>0){ 92 w[k]-=d; 93 w[k^1]+=d; 94 return d; 95 } 96 } 97 k=Next[k]; 98 } 99 return sum; 100 } 101 ll Dinic() 102 { 103 ll ans=0; 104 while(bfs()){ 105 ll f; 106 while((f=dfs(s,inf))>0){ 107 ans+=f; 108 } 109 } 110 return ans; 111 } 112 113 114 void floyd() 115 { 116 for(int k=1;k<=n;k++){ 117 for(int i=1;i<=n;i++){ 118 for(int j=1;j<=n;j++){ 119 mp[i][j]=min(mp[i][j],mp[i][k]+mp[k][j]); 120 } 121 } 122 } 123 } 124 125 void build(ll x) 126 { 127 t=n+1; 128 cnt=0;memset(Head,-1,sizeof(Head)); 129 for(int i=1;i<=n;i++){ 130 add(s,i,num1[i]); 131 add(i,t,num2[i]); 132 // add(i,i+n,inf); 133 } 134 for(int i=1;i<=n;i++){ 135 for(int j=i+1;j<=n;j++){ 136 if(mp[i][j]<=x){ 137 add(i,j,inf); 138 add(j,i,inf); 139 } 140 } 141 } 142 143 } 144 145 bool check(ll x) 146 { 147 build(x); 148 if(Dinic()==all){return true;} 149 return false; 150 } 151 152 int main() 153 { 154 // ios::sync_with_stdio(false); 155 // freopen("in.txt","r",stdin); 156 157 scanf("%d%d",&n,&m); 158 init(); 159 for(int i=1;i<=n;i++){ 160 scanf("%d%d",&num1[i],&num2[i]); 161 all+=num1[i]; 162 } 163 164 for(int i=1;i<=m;i++){ 165 int x,y; 166 ll z; 167 scanf("%d%d%lld",&x,&y,&z); 168 mp[x][y]=mp[y][x]=min(mp[y][x],z); 169 } 170 floyd(); 171 ll l=0,r=Inf,ans=-1; 172 while(r>=l){ 173 // fuck("______________") 174 ll mid=(r+l)/2; 175 if(check(mid)){r=mid-1;ans=mid;} 176 else l=mid+1; 177 } 178 if(ans==Inf){ans=-1;} 179 printf("%lld",ans); 180 181 return 0; 182 } View Code

?

Budget?POJ - 2396

題意:就是給一個(gè)矩陣要滿足的條件,具體是每行之和,每列之和,以及每個(gè)數(shù)的大小限制,要求構(gòu)建出一個(gè)矩陣。

思路:有上下界的網(wǎng)絡(luò)流。

  明天我再單獨(dú)寫一篇博客紀(jì)念這題~~~~

1 #include<iostream> 2 #include<algorithm> 3 #include<vector> 4 #include<stack> 5 #include<queue> 6 #include<map> 7 #include<set> 8 #include<cstdio> 9 #include<cstring> 10 #include<cmath> 11 #include<ctime> 12 #define fuck(x) cout<<#x<<" = "<<x<<endl; 13 #define ls (t<<1) 14 #define rs ((t<<1)+1) 15 using namespace std; 16 typedef long long ll; 17 typedef unsigned long long ull; 18 const int maxn = 500086; 19 const int inf = 2.1e9; 20 const ll Inf = 999999999999999999; 21 const int mod = 1000000007; 22 const double eps = 1e-6; 23 const double pi = acos(-1); 24 25 int n,m,S,T,s,t; 26 int vis[maxn],num[maxn]; 27 int Head[maxn],Next[maxn],v[maxn],w[maxn],cnt; 28 int mp[505][505]; 29 int mph[505][505]; 30 int mpl[505][505]; 31 bool flag; 32 33 void init() 34 { 35 S=1;T=n+m+2;s=T+1;t=T+2; 36 memset(Head,-1,sizeof(Head)); 37 memset(mpl,0,sizeof(mpl)); 38 for(int i=1;i<505;i++){ 39 for(int j=1;j<505;j++){ 40 mph[i][j]=inf; 41 mp[i][j]=0; 42 } 43 } 44 cnt=0;flag=false; 45 } 46 47 void add(int x,int y,int z) 48 { 49 v[cnt]=y; 50 w[cnt]=z; 51 Next[cnt]=Head[x]; 52 Head[x]=cnt++; 53 54 v[cnt]=x; 55 w[cnt]=0; 56 Next[cnt]=Head[y]; 57 Head[y]=cnt++; 58 } 59 60 bool bfs() 61 { 62 memset(vis,0,sizeof(vis)); 63 for(int i=0;i<=t;i++){ 64 num[i]=Head[i]; 65 } 66 vis[s]=1; 67 queue<int>q; 68 q.push(s); 69 int r=0; 70 while(!q.empty()){ 71 int u=q.front(); 72 q.pop(); 73 int k=Head[u]; 74 while(k!=-1){ 75 if(!vis[v[k]]&&w[k]){ 76 vis[v[k]]=vis[u]+1; 77 q.push(v[k]); 78 } 79 k=Next[k]; 80 } 81 } 82 return vis[t]; 83 } 84 85 int dfs(int u,int f) 86 { 87 if(u==t){return f;} 88 int &k=num[u]; 89 int sum=0; 90 while(k!=-1){ 91 if(vis[v[k]]==vis[u]+1&&w[k]){ 92 int d=dfs(v[k],min(f,w[k])); 93 if(d>0){ 94 w[k]-=d; 95 w[k^1]+=d; 96 return d; 97 } 98 } 99 k=Next[k]; 100 } 101 return sum; 102 } 103 int Dinic() 104 { 105 int ans=0; 106 while(bfs()){ 107 int f; 108 while((f=dfs(s,inf))>0){ 109 ans+=f; 110 } 111 } 112 return ans; 113 } 114 115 int row(int x) 116 { 117 return x+1; 118 } 119 120 int col(int x) 121 { 122 return x+n+1; 123 } 124 125 int main() 126 { 127 int TT; 128 scanf("%d",&TT); 129 while(TT--){ 130 int all=0; 131 scanf("%d%d",&n,&m); 132 init(); 133 int x; 134 for(int i=1;i<=n;i++){ 135 scanf("%d",&x); 136 add(S,t,x);add(s,row(i),x);all+=x; 137 } 138 for(int j=1;j<=m;j++){ 139 scanf("%d",&x); 140 add(s,T,x); 141 add(col(j),t,x);all+=x; 142 } 143 add(T,S,inf); 144 int q; 145 scanf("%d",&q); 146 while(q--){ 147 int r,c,t; 148 char s[5]; 149 scanf("%d%d%s%d",&r,&c,s,&t); 150 151 if(r!=0&&c!=0){ 152 if(s[0]=='='){ 153 mpl[row(r)][col(c)]=max(mpl[row(r)][col(c)],t); 154 mph[row(r)][col(c)]=min(mph[row(r)][col(c)],t); 155 } 156 else if(s[0]=='>'){ 157 mpl[row(r)][col(c)]=max(mpl[row(r)][col(c)],t+1); 158 } 159 else if(s[0]=='<'){ 160 mph[row(r)][col(c)]=min(mph[row(r)][col(c)],t-1); 161 } 162 } 163 else if(r==0&&c!=0){ 164 for(int i=1;i<=n;i++){ 165 if(s[0]=='='){ 166 mpl[row(i)][col(c)]=max(mpl[row(i)][col(c)],t); 167 mph[row(i)][col(c)]=min(mph[row(i)][col(c)],t); 168 } 169 else if(s[0]=='>'){ 170 mpl[row(i)][col(c)]=max(mpl[row(i)][col(c)],t+1); 171 } 172 else if(s[0]=='<'){ 173 mph[row(i)][col(c)]=min(mph[row(i)][col(c)],t-1); 174 } 175 } 176 } 177 else if(r!=0&&c==0){ 178 for(int j=1;j<=m;j++){ 179 if(s[0]=='='){ 180 mpl[row(r)][col(j)]=max(mpl[row(r)][col(j)],t); 181 mph[row(r)][col(j)]=min(mph[row(r)][col(j)],t); 182 } 183 else if(s[0]=='>'){ 184 mpl[row(r)][col(j)]=max(mpl[row(r)][col(j)],t+1); 185 } 186 else if(s[0]=='<'){ 187 mph[row(r)][col(j)]=min(mph[row(r)][col(j)],t-1); 188 } 189 } 190 } 191 else{ 192 for(int i=1;i<=n;i++){ 193 for(int j=1;j<=m;j++){ 194 if(s[0]=='='){ 195 mpl[row(i)][col(j)]=max(mpl[row(i)][col(j)],t); 196 mph[row(i)][col(j)]=min(mph[row(i)][col(j)],t); 197 } 198 else if(s[0]=='>'){ 199 mpl[row(i)][col(j)]=max(mpl[row(i)][col(j)],t+1); 200 } 201 else if(s[0]=='<'){ 202 mph[row(i)][col(j)]=min(mph[row(i)][col(j)],t-1); 203 } 204 } 205 } 206 } 207 } 208 for(int i=row(1);i<=row(n);i++){ 209 for(int j=col(1);j<=col(m);j++){ 210 if(mpl[i][j]>mph[i][j]){flag=true;break;} 211 add(i,j,mph[i][j]-mpl[i][j]); 212 add(s,j,mpl[i][j]); 213 add(i,t,mpl[i][j]); 214 all+=mpl[i][j]; 215 } 216 } 217 if(flag){printf("IMPOSSIBLE\n\n");continue;} 218 219 int ans=Dinic(); 220 if(ans!=all){printf("IMPOSSIBLE\n\n");continue;} 221 for(int i=2;i<=n+1;i++){ 222 for(int k=Head[i];k!=-1;k=Next[k]){ 223 if(v[k]>=col(1)&&v[k]<=col(m)){ 224 mp[i-1][v[k]-n-1]+=w[k^1]+mpl[i][v[k]]; 225 } 226 } 227 } 228 for(int i=1;i<=n;i++){ 229 for(int j=1;j<m;j++){ 230 printf("%d ",mp[i][j]); 231 } 232 printf("%d\n",mp[i][m]); 233 } 234 printf("\n"); 235 } 236 return 0; 237 } View Code

?

轉(zhuǎn)載于:https://www.cnblogs.com/ZGQblogs/p/10188207.html

總結(jié)

以上是生活随笔為你收集整理的网络流n题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

免费三及片 | 久久久午夜电影 | 日韩中文字幕免费在线观看 | 国产精品中文字幕在线播放 | 在线日本看片免费人成视久网 | 欧美激情精品久久久久久 | 亚洲精品在线视频观看 | 亚洲国产成人精品久久 | 亚洲欧洲精品一区二区精品久久久 | 亚洲免费在线 | 五月综合| 91视频高清完整版 | 亚洲精品一区二区在线观看 | 区一区二区三区中文字幕 | 91精品国产入口 | 国产五月天婷婷 | 日韩成人精品 | 国产色啪 | 亚洲成人免费观看 | 91高清完整版在线观看 | 国产精品黄色影片导航在线观看 | 一区精品久久 | 日韩欧美国产激情在线播放 | 国产尤物一区二区三区 | av电影 一区二区 | 伊甸园av在线 | 国产亚洲日 | 一区二区三区国产欧美 | 天天翘av| 欧美日韩国产综合网 | 成年人免费av | 国产一二三四在线观看视频 | 99热这里只有精品国产首页 | 免费成人结看片 | 啪啪动态视频 | 一区二区视频欧美 | 日韩欧美一区二区三区视频 | 中国老女人日b | 亚洲精选国产 | 可以免费观看的av片 | 欧美污网站 | 少妇bbw搡bbbb搡bbbb | 久久久久久久久久久网 | 成人精品影视 | 欧美成人影音 | 97国产在线 | 日韩一二区在线 | 少妇18xxxx性xxxx片 | 狠狠干夜夜操天天爽 | 99这里只有精品视频 | 久草在线费播放视频 | 亚洲激情影院 | 九九热视频在线免费观看 | 久久人人爽人人爽人人片 | 黄色一级影院 | 日韩影片在线观看 | av在线电影免费观看 | 日韩性色 | a级国产乱理伦片在线观看 亚洲3级 | 日本韩国欧美在线观看 | 久久国产精品99久久人人澡 | 综合婷婷丁香 | 亚洲精品影视 | 国产视频一区在线免费观看 | 成年人av在线播放 | 高潮久久久 | 中国一级特黄毛片大片久久 | 成人一级片免费看 | 亚洲成人欧美 | 99久久精品久久久久久清纯 | 亚洲精品视频国产 | 中文字幕亚洲欧美日韩 | 天天操天天能 | 国产一区二区播放 | 992tv又爽又黄的免费视频 | 韩日成人av| 久久精品国产免费观看 | 国产老太婆免费交性大片 | 美女网站色 | 美女黄视频免费看 | 在线小视频 | 久久国产高清 | 午夜久久久精品 | 国产日产精品一区二区三区四区 | 国产99视频在线观看 | 国产成人综合图片 | 激情欧美日韩一区二区 | 国内精品久久久精品电影院 | 国产亚洲日 | 国产无区一区二区三麻豆 | 亚洲国产一区二区精品专区 | 久久黄色免费视频 | 黄色国产精品 | 91尤物在线播放 | 国产91精品一区二区绿帽 | 亚洲一二三区精品 | 91麻豆国产 | 精品女同一区二区三区在线观看 | 18国产精品福利片久久婷 | 国产成人精品久久久久 | 综合五月婷婷 | 久久久福利 | 中文字幕国产精品 | 在线视频免费观看 | 亚洲成人资源 | 午夜体验区 | 婷婷亚洲激情 | 久久国产精品一国产精品 | 亚洲综合色视频 | 免费一级特黄毛大片 | 欧美日韩视频在线一区 | 一本之道乱码区 | 天天爱天天射天天干天天 | 超碰电影在线观看 | 亚洲va欧洲va国产va不卡 | 黄色三级在线看 | 亚洲人成影院在线 | 国产精品永久久久久久久久久 | 成人av免费播放 | 麻豆国产精品va在线观看不卡 | 热久久电影 | 中文字幕在线观看完整版 | 日韩av看片 | 久久精品99国产国产 | 日本中文乱码卡一卡二新区 | 欧美性脚交| 中日韩免费视频 | 天天操天天射天天爽 | 精品国产免费一区二区三区五区 | 亚洲理论在线 | aa级黄色大片 | 久久久午夜电影 | 狠狠躁日日躁夜夜躁av | 国产精品欧美久久久久三级 | 日韩欧美一区二区三区在线观看 | 国产综合视频在线观看 | 国产美女视频一区 | 毛片无卡免费无播放器 | av手机在线播放 | 日本视频精品 | 在线观看91久久久久久 | 日韩精品第1页 | 国产精品国产三级国产aⅴ入口 | 麻豆一区二区三区视频 | 亚洲精品乱码久久 | 免费福利片 | 中文字字幕在线 | 亚洲 中文 欧美 日韩vr 在线 | 丁香婷婷久久久综合精品国产 | 欧美激情一区不卡 | 亚洲国产97在线精品一区 | 免费看国产视频 | 日韩在线国产精品 | 中文字幕乱码日本亚洲一区二区 | 国产精品12345 | 国产一区在线免费 | 亚洲专区免费观看 | 日韩精品一区二区三区三炮视频 | 欧美大jb| 日韩中字在线 | 中文字幕在线一区二区三区 | 69av国产| 欧美一级性生活片 | 久久久久久久久久久网站 | 亚洲电影图片小说 | 99视频在线观看免费 | 97色免费视频| 在线观看免费日韩 | 亚洲精品国产精品乱码不99热 | 手机在线视频福利 | 500部大龄熟乱视频使用方法 | 97看片网| www.狠狠插.com | 欧美va天堂va视频va在线 | 国产特级毛片aaaaaa | 中文字幕美女免费在线 | 久久久久福利视频 | 日韩av在线免费看 | 日韩av影视 | 国产精品久久一区二区三区不卡 | 欧美视频日韩 | av一区二区三区在线播放 | 超碰官网 | 日韩欧美视频在线免费观看 | 成人在线视频网 | 国产视频在线观看免费 | 欧洲激情在线 | 黄色小网站在线观看 | 国产成人久久av | 中文字幕在线不卡国产视频 | 成人免费在线视频观看 | 91精品系列 | 最近中文字幕国语免费av | 色一色在线| 18pao国产成视频永久免费 | 99在线观看视频 | 中文字幕亚洲精品日韩 | 成年人视频在线免费播放 | 天天操夜夜做 | 这里有精品在线视频 | 国产一区二区高清 | 国产一级片免费观看 | 色婷婷狠狠18| www.天天综合| 六月色丁 | www亚洲精品 | av怡红院| 免费一级片在线 | 精品国产乱码久久久久久天美 | 免费日韩三级 | 看全黄大色黄大片 | 久久夜色精品国产欧美一区麻豆 | 国产免费观看久久黄 | 日韩大片在线免费观看 | 亚洲三级精品 | 日韩精品免费一线在线观看 | 久久久久综合视频 | 天天干夜夜干 | 97国产精品亚洲精品 | 久久久国产网站 | 国产99久久久久久免费看 | 青青河边草免费观看完整版高清 | 热久久免费国产视频 | 国产香蕉在线 | 视频在线观看91 | 欧美色图88 | 美女精品网站 | 免费看的黄色小视频 | 新版资源中文在线观看 | 精品在线二区 | 久久久久国产精品免费网站 | 国产视频 久久久 | 视频一区二区精品 | 亚洲丝袜中文 | 黄色三级免费观看 | 午夜在线免费观看 | 久草爱 | 国产亚洲视频系列 | 中文 一区二区 | 久久综合久久久 | 最新日韩在线观看视频 | 国产日韩视频在线播放 | 一区二区中文字幕在线播放 | 亚洲欧美在线观看视频 | 探花视频在线观看+在线播放 | 最新成人av | 精品国产成人在线 | 特级毛片爽www免费版 | 五月婷丁香网 | 亚洲精品日韩一区二区电影 | 国产精品久久久久久久免费 | 久久久久国产精品一区 | 国产在线观看免费 | 婷婷六月天天 | 久草电影在线观看 | 亚洲精品小区久久久久久 | 四虎永久视频 | 九九九九九九精品任你躁 | 成人在线播放视频 | 国产精品1024 | 日韩在线色视频 | 亚洲区视频在线观看 | 国产伦理一区二区三区 | 在线观看免费视频你懂的 | 国语久久 | www黄在线| 国产一区在线视频观看 | 国产一级一片免费播放放a 一区二区三区国产欧美 | 成人免费毛片aaaaaa片 | 91看片麻豆| 中日韩在线视频 | 在线观看av中文字幕 | 人成免费网站 | 国产高清小视频 | 婷婷综合久久 | 亚洲精品乱码久久久久久按摩 | 人人插人人艹 | 不卡国产视频 | 日韩免费视频观看 | 亚洲一级国产 | 深夜免费福利网站 | 久久综合国产伦精品免费 | 成人一区二区三区中文字幕 | 开心色激情网 | 中文字幕最新精品 | 成+人+色综合 | 人人超碰人人 | 日韩成人精品在线观看 | 亚洲欧美乱综合图片区小说区 | 激情开心站 | 免费网站看av片 | 日韩中文字幕免费电影 | 在线观看av免费观看 | 亚洲最快最全在线视频 | 日韩精品在线视频免费观看 | 国产精品va在线观看入 | 精品在线视频一区二区三区 | 亚洲国产成人精品在线 | 国产免费叼嘿网站免费 | 亚洲在线黄色 | av福利电影 | 成人av影院在线观看 | 欧美粗又大| 欧美黄色高清 | 综合五月婷婷 | 三级动图 | 久久免费黄色 | 91精品国产乱码在线观看 | 国产99一区 | 香蕉视频网站在线观看 | 久久久在线免费观看 | 麻豆影音先锋 | 日韩免费一二三区 | 可以免费观看的av片 | 精品国产99国产精品 | 中文字幕网址 | 天天精品视频 | 456成人精品影院 | 婷色| 午夜视频一区二区三区 | 日韩美女黄色片 | 日韩av成人免费看 | 91漂亮少妇露脸在线播放 | 在线视频你懂 | 丰满少妇在线观看资源站 | 在线播放视频一区 | 久久黄色影视 | 国产三级午夜理伦三级 | 色91在线| 久久视频免费观看 | 久草在线视频精品 | 国产亚洲人成网站在线观看 | 久久激情视频 久久 | 天堂网av 在线| 激情综合五月天 | 天天操天天操天天操天天操天天操天天操 | 免费中午字幕无吗 | 国产探花 | 久草在线精品观看 | 久久99在线| 这里只有精彩视频 | 久热爱 | 久久精品综合网 | 国产精品专区在线观看 | 天天色天天骑天天射 | 亚洲成人欧美 | 国产精品a久久 | av在线免费播放网站 | 欧美福利网址 | av电影免费在线播放 | 91精品视频网站 | 91精品视频免费观看 | 人人插人人舔 | 99热日本| 在线免费高清一区二区三区 | 九九热在线视频 | 天天艹天天干天天 | 国产精品美女视频网站 | 日产av在线播放 | 国内精品美女在线观看 | 91九色视频国产 | 亚洲精品动漫在线 | 国产99久久久国产精品免费二区 | 蜜臀久久99精品久久久酒店新书 | 国产成人精品一区二区在线观看 | 久热av在线| 天天在线免费视频 | av无限看 | 国产一区二区成人 | 国产成人一区二区三区免费看 | 久久精品国产成人精品 | 亚洲高清av在线 | 国产美女视频免费观看的网站 | 黄色毛片观看 | 一区二区精品在线观看 | 亚洲一级电影在线观看 | 久久精品久久久久 | 国产黄a三级三级三级三级三级 | 亚洲欧美激情插 | 久久九九精品久久 | 青青河边草观看完整版高清 | 国产精品高潮久久av | 欧美国产日韩激情 | 少妇激情久久 | 国产欧美综合视频 | 亚洲1级片 | 国产精品一区二区久久精品爱微奶 | 黄色在线观看网站 | 色资源在线观看 | 中文国产成人精品久久一 | 精品国产免费人成在线观看 | 九九九九热精品免费视频点播观看 | 国产午夜视频在线观看 | 欧美日韩国产区 | 国产精品mv| 一区 二区电影免费在线观看 | 欧美性受极品xxxx喷水 | 美女网站视频一区 | 日韩二三区| 人人草天天草 | 成av人电影| 91成人精品视频 | 亚洲影院天堂 | 久草在线视频中文 | 亚洲成人第一区 | 2019av在线视频 | 成人a视频 | 国产精品美女久久久网av | 91精品国产92久久久久 | 国产 在线 日韩 | 一区二区三区免费播放 | 一区二区精 | 超碰在线中文字幕 | 日本中文字幕免费观看 | 中文字幕传媒 | 久久99精品国产91久久来源 | 亚洲精品乱码久久久久v最新版 | 91片网| 色狠狠久久av五月综合 | 99久热在线精品视频成人一区 | 黄色最新网址 | 激情久久久久久久久久久久久久久久 | 午夜久久福利视频 | a久久久久 | 国产精品手机在线观看 | 久久艹免费| 日韩欧美国产激情在线播放 | 天天天天天天天天操 | 国产一级免费片 | 久草观看视频 | 91亚洲狠狠婷婷综合久久久 | 蜜臀久久99精品久久久久久网站 | 日韩中文字幕视频在线 | 亚洲一级片在线看 | 69av免费视频 | 欧美日韩二区三区 | 天天操操操操操操 | 久久亚洲在线 | av福利免费| 一区二区三区国产欧美 | 99在线精品视频在线观看 | 日韩理论电影在线 | 久久精品免费电影 | 成人小电影在线看 | 久久国产精品色av免费看 | 69xxxx欧美 | 亚洲激情中文 | 国产日产精品一区二区三区四区的观看方式 | 99精品视频免费观看 | 亚洲97在线 | 免费高清在线一区 | 国产精品免费大片视频 | 亚洲精品在线观看av | 欧美精品久久久久久久久久久 | 97免费在线观看 | 成人动漫一区二区三区 | 永久免费的av电影 | 五月婷丁香网 | 欧美性爽爽 | av亚洲产国偷v产偷v自拍小说 | 中文字幕在线影院 | 人成在线免费视频 | www178ccom视频在线 | 在线不卡视频 | 国产1区2区3区精品美女 | 高清一区二区三区 | 国产夫妻性生活自拍 | www色网站 | 欧美精品一区二区三区一线天视频 | 欧美福利精品 | 在线观看国产一区 | 日韩二区在线播放 | 成人九九视频 | 亚洲v欧美v国产v在线观看 | 9999在线| 久久久久这里只有精品 | 香蕉在线观看 | 最近中文字幕在线中文高清版 | 四虎在线影视 | 日韩视频在线不卡 | 97超碰人人网 | 人人射人人爽 | 在线看欧美 | 国产黑丝一区二区三区 | 欧美孕妇视频 | av片一区二区| 亚洲天堂精品 | 伊人婷婷激情 | 精品一二三四在线 | 天天操天天干天天摸 | 亚洲精品一区二区精华 | 国产一区二区日本 | 97视频久久久 | 亚洲精品乱码白浆高清久久久久久 | 国产精品毛片一区 | 国产91对白在线播 | 最近中文字幕免费av | www久久com| 欧美日韩不卡在线观看 | 久久久久久网址 | 国产婷婷vvvv激情久 | 丁香伊人网 | 亚洲综合网 | 亚洲va在线va天堂va偷拍 | 久久成人国产 | 久久综合狠狠综合久久狠狠色综合 | 在线成人免费电影 | 日本黄色特级片 | 麻豆极品 | 日韩欧美xxxx | 91精品视频免费 | 在线看成人av | 久久看免费视频 | 色av资源网| 三级黄色在线观看 | 国产精品资源在线 | 深夜免费网站 | 91久久电影| 天天做天天爱天天综合网 | 国产尤物在线 | av福利超碰网站 | 亚洲 在线| 亚洲精品国产拍在线 | 91爱爱中文字幕 | 亚洲成人家庭影院 | 久久艹国产视频 | 国产999精品久久久影片官网 | 精品国产伦一区二区三区观看方式 | 日韩精品视频免费在线观看 | 亚洲国产高清视频 | 五月激情婷婷丁香 | 午夜性福利 | 成人黄色国产 | 一区二区中文字幕在线播放 | 精品99999 | 亚州视频在线 | 九九久久视频 | 黄色av电影在线观看 | 久久久久国产精品免费免费搜索 | 一区中文字幕 | 五月婷婷六月综合 | 国产一二区在线观看 | 精品影院一区二区久久久 | av短片在线观看 | 日韩理论在线 | 久久资源总站 | 超碰人人草人人 | 国产精品嫩草影院99网站 | 992tv又爽又黄的免费视频 | 久久久久久久久久久成人 | 特级毛片在线观看 | 久久视频二区 | 99精品免费网| 欧美精品亚洲二区 | 欧美最猛性xxx | 久久人人爽爽人人爽人人片av | 久久草| 国产99在线免费 | 久久情爱| 亚洲精品久久久久久中文传媒 | 97超碰资源站 | 视频在线播放国产 | 最近中文字幕大全中文字幕免费 | 精品一区久久 | 国产精品无av码在线观看 | 免费在线激情视频 | 日本中文字幕视频 | 99在线精品视频在线观看 | 伊人网站| 久久综合狠狠综合久久综合88 | 久久r精品 | 日韩精品中文字幕有码 | 中文字幕有码在线播放 | 国产999免费视频 | 欧美在线视频一区二区三区 | 青青草国产在线 | 婷婷射五月 | 午夜在线日韩 | 亚洲年轻女教师毛茸茸 | 一级欧美日韩 | 97精品一区二区三区 | 天无日天天操天天干 | 一区二区精品视频 | 日本午夜在线亚洲.国产 | 欧美人牲 | 久久99热久久99精品 | 伊人五月婷 | 国产91在线观 | 在线三级中文 | 久久精品中文字幕少妇 | www免费看片com | 99热 精品在线 | 日本护士撒尿xxxx18 | 探花视频在线观看免费 | 99国产精品视频免费观看一公开 | 成年人免费观看在线视频 | 免费91在线 | 综合网伊人 | 成人不用播放器 | 免费在线观看一级片 | 亚洲精品系列 | 99久久这里有精品 | 麻豆视频一区二区 | 天天操狠狠操夜夜操 | 四虎成人精品 | 四虎亚洲精品 | 中文字幕在线播放日韩 | 日本在线观看黄色 | 亚洲最新av在线 | 午夜视频色 | 黄色av一级片 | 久草在线视频免费资源观看 | 91精品福利在线 | 国产亚洲精品福利 | 欧美国产高清 | 亚洲综合丁香 | 91热视频 | 91x色 | 五月婷综合网 | 久久看毛片 | 久草在线视频资源 | 国产精品网站 | 激情婷婷在线 | 黄色网在线播放 | 日日操夜夜操狠狠操 | 成人在线免费小视频 | 久久99亚洲精品 | 成人91视频| 亚洲天天在线 | 亚洲欧美视频在线观看 | 在线免费观看视频一区二区三区 | 夜色成人网 | 久久久久久激情 | 日韩av片无码一区二区不卡电影 | 国产 中文 日韩 欧美 | 免费看短 | 综合网天天 | 国产综合精品久久 | 成人免费视频播放 | 欧美午夜a | 992tv人人网tv亚洲精品 | 欧美精品在线一区 | 国产一区在线视频播放 | 日韩免费成人 | 中文区中文字幕免费看 | 精品成人a区在线观看 | 亚洲精品理论片 | 免费久久99精品国产 | 青草视频在线播放 | 永久免费精品视频网站 | 欧美日韩免费观看一区=区三区 | 91 在线视频 | 日韩精品在线播放 | 在线观看深夜福利 | 特级西西444www高清大视频 | 日日操网 | 最近2019中文免费高清视频观看www99 | 色午夜 | 欧美精品乱码久久久久 | 国产精品久久久久婷婷二区次 | 成人在线中文字幕 | 日韩精品免费一区 | 日本中文字幕一二区观 | 美国三级黄色大片 | 日韩精品极品视频 | 亚洲蜜桃av | 久久久国产一区二区三区四区小说 | 又黄又爽又湿又无遮挡的在线视频 | 精品国产成人av | 国产精品久久久久毛片大屁完整版 | 欧美大jb| 久久久久久久久久久精 | 欧美国产日韩一区 | 免费看的国产视频网站 | 91漂亮少妇露脸在线播放 | 日日夜夜免费精品视频 | 久久蜜臀av | 天天操天天干天天插 | 91成人精品 | 色com网 | 日本精品一区二区三区在线观看 | 日日操日日干 | 国产精品福利av | 久久免费视频在线观看30 | 91桃花视频| 天天干天天玩天天操 | 99精品视频在线 | 久久久久激情电影 | 成人动漫一区二区三区 | 国产亚洲欧美在线视频 | 91视频在线免费看 | 久久夜色精品国产欧美乱 | 在线观看v片 | 91久久奴性调教 | 五月天堂网 | 在线成人免费 | 美州a亚洲一视本频v色道 | 亚洲欧洲精品久久 | 日韩av线观看 | 91av官网 | www.xxxx欧美| 美女中文字幕 | www免费看片com| 在线观看免费高清视频大全追剧 | 韩国av一区二区三区在线观看 | 国产91免费在线 | 国产不卡在线看 | 天天草综合网 | 久久久黄视频 | 黄色日本片 | 色综久久 | 久久久综合色 | 欧美一二区在线 | 国产一二区精品 | 99久热在线精品视频成人一区 | 免费色视频网址 | 成人av一级片 | 中文字幕2021 | 国产精品九九久久99视频 | avav99| 久操久 | 私人av| 日韩乱理 | 精品96久久久久久中文字幕无 | 久久久国产精品亚洲一区 | 探花视频网站 | 国产在线播放一区二区三区 | 少妇搡bbbb搡bbb搡忠贞 | 日韩欧美一区二区三区在线观看 | 国产精品久久久久久久av大片 | 久久av影院 | 国产视频一二三 | 国产成人99久久亚洲综合精品 | 久久亚洲婷婷 | av网站在线观看播放 | 午夜精品久久久久久久久久久 | 欧美在线aa | 久久国产一区二区三区 | 久久一区二区三区超碰国产精品 | 天天鲁天天干天天射 | 高清av免费一区中文字幕 | 激情网在线视频 | 亚洲欧美视频在线观看 | 久草线 | 国产一级片免费播放 | 五月天激情在线 | 狠狠的干 | 深夜免费福利在线 | 日韩色区 | 精品福利视频在线 | 91pony九色丨交换 | 91精品国产91p65 | 在线中文字幕av观看 | 中文字幕第 | 天堂av影院| 四虎最新入口 | 日韩精品欧美视频 | 在线国产能看的 | 黄色成人免费电影 | 日韩激情片在线观看 | 久久人网 | 国产视频97 | 99这里只有精品99 | 婷婷丁香久久五月婷婷 | 99麻豆久久久国产精品免费 | 美女网站黄在线观看 | a爱爱视频 | 99精品网站 | 日韩色中色 | 免费看国产一级片 | 91av免费在线观看 | 日韩一区在线免费观看 | 在线观看久草 | 国产女教师精品久久av | 国产精品一区二区三区在线看 | 欧美国产一区二区 | 精品亚洲免费 | 久久久精品国产免费观看一区二区 | 中文字幕人成不卡一区 | 免费福利在线 | 97超碰色偷偷 | 天天爱天天舔 | 成人一级视频在线观看 | av超碰免费在线 | 亚洲精品久久久久www | 久草9视频| 日韩a级免费视频 | 国产区精品区 | 色久av | 成人动漫视频在线 | 亚洲精品字幕在线观看 | 久久国产视屏 | 美女免费视频观看网站 | 国产二区视频在线观看 | 狠狠狠色丁香婷婷综合久久五月 | 国产特级毛片aaaaaa | 久久首页| 亚洲成人精品av | 色综合久久综合中文综合网 | 波多野结衣在线播放一区 | 天天综合网在线 | 91亚洲精品久久久久图片蜜桃 | 六月丁香久久 | 国产高清视频免费观看 | 夜夜躁日日躁狠狠躁 | 91你懂的| 国产小视频在线观看 | 欧美国产视频在线 | 久久精品视频4 | 亚洲aⅴ一区二区三区 | www免费看片com | 青青河边草手机免费 | 91九色蝌蚪在线 | 亚洲一级黄色片 | 香蕉视频在线观看免费 | 久久成人综合视频 | 伊人婷婷色 | 亚洲网站在线 | 精品一区二区在线观看 | 久久精品96 | 中文字幕色在线视频 | 中文字幕一区二区在线播放 | 一本到在线 | 亚洲午夜剧场 | 在线观看国产高清视频 | 最新av网址大全 | 综合久久一本 | 日韩一级黄色av | 黄污网 | 成人在线播放免费观看 | av中文字幕在线电影 | 亚洲japanese制服美女 | 精品人人爽 | 天天干天天操av | av资源免费在线观看 | 在线国产能看的 | 黄色成人av | 中文字幕观看av | 玖玖在线视频观看 | 色噜噜噜 | 91自拍视频在线 | 色噜噜日韩精品一区二区三区视频 | 久久成人国产精品免费软件 | 91在线观看视频 | 亚洲精品999 | 久久激情五月丁香伊人 | 欧美日韩一区久久 | av看片在线观看 | 8x成人在线 | 精品一二三四五区 | 欧美成人影音 | 99久久99久久 | 超碰人人91| 国产在线观看xxx | 在线国产专区 | 夜夜夜夜夜夜操 | 日本电影久久 | 国产专区在线 | 午夜精品一区二区三区在线 | 99精品热视频只有精品10 | 狠狠操狠狠插 | 久久久国产影院 | 四虎永久视频 | 成人影音在线 | 亚洲永久精品在线 | 国产丝袜 | 中文字幕免费一区二区 | 人人射网站| 免费福利片 | 免费看片网页 | 欧美日韩大片在线观看 | 综合久久2023| 天天干天天怕 | 最新日韩精品 | 9ⅰ精品久久久久久久久中文字幕 | 久久经典国产视频 | 九九色在线观看 | 日女人免费视频 | 中文字幕在线观看一区二区 | 国产永久免费高清在线观看视频 | 精品视频中文字幕 | 五月天激情视频在线观看 | 久久精品这里都是精品 | 日韩精品中文字幕在线不卡尤物 | 精品中文字幕视频 | 久久综合成人 | 免费久久片| 欧美久久九九 | 国内三级在线观看 | 日韩二区在线播放 | 成人小视频在线播放 | 五月天欧美精品 | 欧美激情视频一二三区 | 免费av观看网站 | 日韩av快播电影网 | 特级西西444www高清大视频 | 伊人色**天天综合婷婷 | 亚洲欧美日韩国产一区二区 | 国产成人一区在线 | 亚洲欧美乱综合图片区小说区 | 日韩欧美在线影院 | 免费观看第二部31集 | 免费国产在线精品 | 国色天香永久免费 | 日本精品视频一区 | 91精品国产自产老师啪 | 国产一级精品绿帽视频 | 美女激情影院 | 欧美日韩三区二区 | 国产人成在线视频 | 色网站在线免费观看 | 国产成人精品在线播放 | 亚洲闷骚少妇在线观看网站 | 久久久久免费网站 | 国产精品欧美久久久久三级 | 国产精品第三页 | 亚洲精品久久久久久国 | 国产一区精品在线 | 日韩欧美高清 | 97精品国自产拍在线观看 | 婷婷综合国产 | 日韩免费网站 | 91麻豆精品一区二区三区 | 久久99精品视频 | 色国产精品一区在线观看 | 久久影视一区 | 在线观看视频你懂得 | av免费看电影| 96香蕉视频 | 亚洲 欧洲 国产 日本 综合 | 欧美日韩高清在线一区 | 久久精品久久久久 | 欧美日韩免费在线观看视频 | 免费在线黄网 | 久久精品中文 | 亚洲精品中文字幕在线观看 | 狠狠狠色狠狠色综合 | 亚洲国产人午在线一二区 | 久久久96 | 国产高清中文字幕 | 麻豆一区二区 | 四虎成人免费观看 | 麻豆精品视频 | 波多野结衣电影一区二区三区 | 精品人人人人 | 天天色天天射天天干 | 人人爽人人澡人人添人人人人 | 最近乱久中文字幕 | 激情在线网址 | 91成人免费 | 午夜久久电影网 | 欧美日韩在线观看一区 | 天天插狠狠插 | 大片网站久久 | 免费三级大片 | 成人黄色在线电影 | 国产精品一区专区欧美日韩 | 色噜噜日韩精品一区二区三区视频 | 国产色视频网站 | 午夜美女网站 | 日韩精品无码一区二区三区 | 国产精品久久久久影院日本 | 亚洲精品视频在线观看视频 | 国产成人av免费在线观看 | 免费a一级 | 国产成人免费高清 | 麻豆视频国产 | 在线观看免费91 | 久久婷婷五月综合色丁香 | 亚洲综合情 | 性色av香蕉一区二区 | 天天干天天做天天操 | 不卡av免费在线观看 | 欧美看片| 日韩欧美在线综合网 | 97超碰成人在线 | 97精品国产97久久久久久粉红 | 亚洲一区视频免费观看 | 国产成人免费观看 | 97超碰中文字幕 | 狠狠色狠狠色综合系列 | 99久久99久久精品 | 久久激情视频 久久 | 国产精品18久久久久久久 | 超碰免费公开 | 97精品久久人人爽人人爽 | 午夜精品视频在线 | 免费在线观看av电影 | 91人人澡 | av福利在线 | www一起操| 色噜噜噜噜 | 久久久影院官网 | 激情电影在线观看 | 婷婷在线网 | 国产成人精品亚洲精品 | 毛片.com| 黄污视频大全 |