求助:error C2601: “main”: 本地函数定义是非法的

u010278458 2013-04-13 11:25:40
#include "stdafx.h"
#include "stdafx.h"
#include<iostream>
#include<queue>

#define maxn 1000
#define inf 100000
#define min(a,b) ((a)<(b)?(a):(b))
struct arctype
{
int c,f;
};
arctype edge [maxn][maxn];
int n,m;
int flag[maxn];
int prev[maxn];
int alpha[maxn];
int queue[maxn];
int v;
int qs,qe;
int i,j;
void ford()
{
while(1)
{
memset(flag,0xff,sizeof(flag));
memset(prev,0xff,sizeof(prev));memset(alpha,0xff,sizeof(alpha));
flag[0]=0;prev[0]=0;alpha[0]=inf;
qs=qe=0;
queue[qe]=0;qe++;
while(qs<qe&&flag[n-1]==-1)
{
v=queue[qs];qs++;
for(i=0;i<n;i++)
{
if(flag[i]==-1)
{
if(edge[v][i].c<inf&&edge[v][i].f<edge[v][i].c)
{
flag[i]=0;prev[i]=v;
alpha[i]=min(alpha[v],edge[v][i].c-edge[v][i].f);
queue[qe]=i;qe++;
}
else if(edge[v][i].c<inf&& edge[v][i].f>0)
{
flag[i]=0;prev[i]=-v;
alpha[i]=min(alpha[v], edge[v][i].f);
queue[qe]=i;qe++;
}
}
}
flag[v]=1;
if(flag[n-1]==-1||alpha[n-1]==0)
break;
int k1=n-1,k2=abs(prev[k1]);
int a=alpha[n-1];
while(1)
{
if(edge[k2][k1].f<inf)
edge[k2][k1].f= edge[k2][k1].f+a;
else edge[k1][k2].f= edge[k1][k2].f-a;
if(k2==0)
break;
k1=k2;k2=abs(prev[k2]);
}
}
int maxflow=0;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(i==0&& edge[i][j].f<inf)
maxflow+= edge[i][j].f;
if(edge[i][j].f<inf)
printf("%d->%d:%d\n",i,j, edge[i][j].f);
}
}
printf("maxflow:%d\n",maxflow);
}
void main()
{
int u,v,c,f;
scanf("%d%d",&n,&m);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
edge[i][j].c= edge[i][j].f=inf;
}
for(i=0;i<m;i++)
{
scanf("%d%d%d%d",&u,&v,&c,&f);
edge[u][v].c=c; edge[u][v].f=f;
}
ford();
}
这个程序运行后总会出现“main”: 本地函数定义是非法的,请大虾们帮帮我,毕业论文急需要的,万分感激!!!
...全文
6410 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
asd13768331678 2014-08-25
  • 打赏
  • 举报
回复
检查下大括号
可期不折腾 2014-08-07
  • 打赏
  • 举报
回复
应成对检查大括号 或是循环体本身结构性错误
u010278458 2013-04-13
  • 打赏
  • 举报
回复
这个程序是用ford标记法求最大流,我用书上的例子。输入: 6 10 0 1 8 2 0 2 4 3 1 3 2 2 1 4 2 2 2 1 4 2 2 3 1 1 2 4 4 0 3 4 6 0 3 5 9 3 4 5 7 2 但运行窗口中会一直运行下去,得不到书上的结果,这是为什么?
ACLegend 2013-04-13
  • 打赏
  • 举报
回复
main少了个括号
u010278458 2013-04-13
  • 打赏
  • 举报
回复
我试过了,是少了一个},但运行的时候会一直运行下去,没有结果出来,这是为什么啊???
startservice 2013-04-13
  • 打赏
  • 举报
回复
引用 1 楼 adlay 的回复:
void main 这句的前面少了一个 } .
+
海的神话 2013-04-13
  • 打赏
  • 举报
回复
嗯,main 函数之前少了一个大括号,还要你的数组名int queue[maxn];跟容器queue一样,这样子不好。反正我自己的VS2010上编译是不通过的
gfchen1989 2013-04-13
  • 打赏
  • 举报
回复
看的眼都花了
www_adintr_com 2013-04-13
  • 打赏
  • 举报
回复
void main 这句的前面少了一个 } .
PursuingHappyness 2013-04-13
  • 打赏
  • 举报
回复
停不下来就要检查是否有死循环了...
笨蛋糕 2013-04-13
  • 打赏
  • 举报
回复
引用 8 楼 adlay 的回复:
最外面那个 while(1), 没有任何 break, 自然是一个死循环
+++
www_adintr_com 2013-04-13
  • 打赏
  • 举报
回复
最外面那个 while(1), 没有任何 break, 自然是一个死循环

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧