节约里程法.cpp 出现了三个问题,

#编译出现了两个错误,一直找不到,怎么改,谢谢

#include <stdio.h>
void main()
#include<iostream>
#include <fstream>
#include<vector>
#include <map>
#include <deque> 
#include <algorithm>
#include <fstream>


using namespace std;

struct vec_load
{
    int vnum;
    int rest;
    vec_load(int i,int j):vnum(i),rest(j){}
 } ;

    class path
    {
    public:
        deque<int> no;
        int dis;
        double vec;
        int f,r;
        path(double v,int i):vec(v),f(i),r(i){        } 
    };

void creatpath(int& numb,int** dist,vector<double>& load,double re);
    
int main()
{
    int numb=14;
    double temp;
    cout<<"请输入客户数:"<<endl;
    ifstream fin("dist.txt");
    
    cin>>numb;
    cout<<"请依次输入各个客户需求量(用空格隔开):"<<endl; 
    vector<double> load;//用于存储各物流子节点货物量需求量 
    for(int i=0;i<numb;i++)
    {
        cin>>temp;
        load.push_back(temp);    
    }
    int **dist; //指向存储给节点最短距离的二维数组 
    dist=new int*[numb+1];
    for(int i=0;i<numb+1;i++)
    dist[i]=new int[numb+1]{0};
  //cout<<"请依次输入各客户到配送中心的最短距离:"<<endl;
    for(int i=0;i<numb;i++)
    {
        fin>>dist[0][i+1];
        dist[i+1][0]=dist[0][i+1];
     } 
     for(int i=1;i<numb;i++)
     {
         //cout<<"请输入"<<i<<"到其编号后的客户的最短距离:"<<endl; 
        for(int j=i+1;j<=numb;j++)
         {
             fin>>dist[i][j];
             dist[j][i]=dist[i][j];
         }
     }
     //循环获取配送中心的车辆载荷及对应数量,用vector进行存储
     double re=15;
    // cout<<"请输入车辆载荷"<<endl;
     //cin>>re;
      

    creatpath(numb,dist,load,re);
     
    return 0;
 } 
 
void creatpath(int& numb,int** dist,vector<double>& load,double re) 
{
    //新建一个numb维表格存储节约里程
    int**save; 
    save=new int*[numb];
    for(int i=0;i<numb;i++)
    save[i]=new int[numb]{0};
    //计算节约里程并填入save表中指定位置
    for(int i=0;i<numb;i++)
    {
        for(int j=i+1;j<numb;j++)
        {
            save[i][j]=dist[0][i+1]+dist[0][j+1]-dist[i+1][j+1];
            save[j][i]=save[i][j];
        }
     } 
    //定义一个类,存储两节的编号以及节约里程,便于后续排序
    class Save_node
    {
    public:
            int m,n;
            int dis;
            void set(int &i,int &j,int&d) 
            {
                this->m=i;
                this->n=j;
                this->dis=d;
            }
            
    };
    Save_node temp;
    vector<Save_node> rsave;
    for(int i=0;i<numb-1;i++)
    for(int j=i+1;j<numb;j++)
    {
        temp.set(i,j,save[i][j]);
        rsave.push_back(temp);
    }
    sort(rsave.begin(),rsave.end(),[](Save_node& s1,Save_node& s2){return s1.dis>s2.dis;});
    auto it1=rsave.begin();
    

/* for(auto &r:rsave)
{
    cout<<"\t"<<r.m<<"\t"<<r.n<<"\t"<<r.dis<<endl;
}*/

    vector<path> result;
    int time=0;
    for(auto &v:load)
    {
        auto ptemp=path(v,time);
        ptemp.dis=2*dist[0][time+1];
        ptemp.no.push_back(time);
        ptemp.f=ptemp.no.front();
        ptemp.r=ptemp.no.back();
        result.push_back(ptemp);
        time++;
    }
    vector<int> suc;
   
  
   
    bool fnode(int& ,path &);
    bool rnode(int& ,path &);
    while(suc.size()!=numb&&it1!=rsave.end())
    {
        int head=it1->m;
        int back=it1->n;
        //cout<<it1->m<<"\t"<<it1->n<<"\t"<<it1->dis<<endl;
       auto i1=result.begin();
       auto i2=result.begin();
       for(;i1!=result.end();i1++)
       {
           if(i1->f==head||i1->r==head)
           break;
       }
        for(;i2!=result.end();i2++)
       {
           if(i2->f==back||i2->r==back)
           break;
       }
       if(i1==result.end()||i2==result.end())
       {
           it1++;
           continue;
        } 
    
        if(i1->no.size()==1)
        {
            if(i2->no.size()==1)
            {
                if(i1->vec+i2->vec<=re)
                {
                    i1->no.push_back(back);
                    i1->dis=i1->dis-dist[0][head+1]+dist[0][back+1]+dist[head+1][back+1];
                    i1->vec=i1->vec+i2->vec;
                    i1->f=i1->no.front();
                    i1->r=i1->no.back();
                    result.erase(i2);
                    suc.push_back(head);
                    suc.push_back(back);
                         it1++; 
                     continue;
                        }
            }
            else 
            {
                if(i2->f==back)
                {
                    if(i2->vec+i1->vec<=re)
                    {
                    i2->no.push_front(head);
                    i2->dis=i2->dis+dist[0][head+1]-dist[0][back+1]+dist[head+1][back+1];
                    i2->vec=i2->vec+i1->vec;
                    i2->f=i2->no.front();
                    i2->r=i2->no.back();
                    result.erase(i1);
                    suc.push_back(head);
                    }
                        it1++; 
                    continue;
                }
                else if(i2->r==back)
                {
                    if(i2->vec+i1->vec<=re)
                {
                    i2->no.push_front(head);
                    i2->dis=i2->dis+dist[0][head+1]-dist[0][back+1]+dist[head+1][back+1];
                    i2->vec=i2->vec+i1->vec;
                    i2->f=i2->no.front();
                    i2->r=i2->no.back();
                    result.erase(i1);
                    suc.push_back(head);
                }
                    it1++; 
                continue;
                }
            }
        }
        else//路径1不是初始路径 
        {
            if(i1->f==head)
            {
                if(i2->no.size()==1)
                {
                    if(i1->vec+i2->vec<=re)
                    {
                    i1->no.push_front(back);
                    i1->dis=i1->dis-dist[0][head+1]+dist[0][back+1]+dist[head+1][back+1];
                    i1->vec=i1->vec+i2->vec;
                    i1->f=i1->no.front();
                    i1->r=i1->no.back();
                    result.erase(i2);
                    suc.push_back(back);
                    }
                         it1++; 
                     continue;
                }
            }
            else if(i1->r==head)
            {
                if(i2->no.size()==1)
                {
                    if(i1->vec+i2->vec<=re)
                    {
                    i1->no.push_back(back);
                    i1->dis=i1->dis-dist[0][head+1]+dist[0][back+1]+dist[head+1][back+1];
                    i1->vec=i1->vec+i2->vec;
                    i1->f=i1->no.front();
                    i1->r=i1->no.back();
                    result.erase(i2);
                    suc.push_back(back);
                    }
                         it1++; 
                     continue;
                }
            }
        }
        it1++;
    }
        
    int count=1;
    for(auto &r:result)
    {
        cout<<"线路"<<count++<<":"<<"0->";
        for(auto &v:r.no)
        cout<<v+1<<"->";
        cout<<"0"<<"\tdis:"<<r.dis<<"\tload:"<<r.vec<<endl;
        }    
    
}

 bool fnode(int &m,path &v)
    {
        if(m==v.no.front())
        return true;
        return false;
    }
    
bool rnode(int& m,path &v)
    {
        if(m==v.no.back())return true;
        return false;
    }    


第2行这个void main()太明显了吧……首先现在c/c++不能用void main只能int main,其次怎么能有两个main()函数呢
还有第4行和第9行导入了两个一样的文件,删掉一个