给一个完整代码
```cpp
#include<bits/stdc++.h>
#define maxn 3010
#define maxm 1000010
#define INF 0x3f3f3f3f
//#define int long long
using namespace std;
bool vis[maxn];
int n,s,t,tot=1,res,nf,nt;
int val[maxn][maxn],id[maxn][maxn];
int Dis[maxn],head[maxn],cur[maxn];
struct cost{int fr,to,dis,cost,nxt;}e[maxm],E[maxm];
int read(){
int s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-') w=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){s=(s<<1)+(s<<3)+ch-'0';ch=getchar();}
return s*w;
}
void add(int fr,int to,int dis,int cost){
e[++tot].to=to;e[tot].dis=dis;
e[tot].cost=cost;e[tot].nxt=head[fr];
head[fr]=tot;E[tot]=e[tot];
}
bool spfa(){
bool flag=false;
memset(Dis,INF,sizeof Dis);
memcpy(cur,head,sizeof head);
deque<int> q;q.push_back(s);Dis[s]=0;
while(!q.empty()){
int u=q.front();
q.pop_front();vis[u]=0;
for(int i=head[u];i;i=e[i].nxt){
int to=e[i].to;
if(i^nf&&i^nt){
if(Dis[to]>Dis[u]+e[i].cost&&e[i].dis){
Dis[to]=Dis[u]+e[i].cost;
if(!vis[to]){
vis[to]=1;
if(!q.empty()&&Dis[to]<Dis[q.front()]) q.push_front(to);
else q.push_back(to);
}
if(to==t) flag=true;
}
}
}
}
return flag;
}
int dfs(int u,int limit){
if(u==t) return limit;int flow=0;vis[u]=1;
for(int i=cur[u];i&&flow<limit;i=e[i].nxt){
int to=e[i].to;cur[u]=i;
if(Dis[to]==Dis[u]+e[i].cost&&!vis[to]&&e[i].dis){
int f=dfs(to,min(e[i].dis,limit-flow));
if(!f)Dis[to]=INF;res+=e[i].cost*f;
e[i].dis-=f;e[i^1].dis+=f;flow+=f;
}
}
vis[u]=0;
return flow;
}
int dinic(){
int Maxflow=0,flow=0;
while(spfa())
while(flow=dfs(s,INF))
Maxflow+=flow;
return Maxflow;
}
int main(){
n=read();s=n*3+1;t=s+1;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++){
val[i][j]=read();
add(i,j+n,1,-val[i][j]);
add(j+n,i,0,val[i][j]);
id[i][j]=tot;
}
for(int i=1;i<=n;i++){
add(s,i,1,0);add(i,s,0,0);
add(i+n,t,1,0);add(t,i+n,0,0);
}
dinic();printf("%d\n",-res);
int fir=res;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(!e[id[i][j]].dis) id[i][j]=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++){
if(!id[i][j]) continue;
nf=id[i][j],nt=id[i][j]^1;res=0;
for(int k=1;k<=tot;k++) e[k]=E[k];
dinic();
if(res>fir){printf("%d %d\n",i,j);break;}
}
return 0;
}
```
有没有人帮帮忙,要死了/kk
by KEBrantily @ 2021-03-21 21:37:39