PAT 1001-1003(C++)

1001_A+B Format (20%)

#include<iostream>
using namespace std;
int main(){
    int a,b;
    cin>>a>>b;
    string s = to_string(a+b);
    int x = s.length()-1;
    for(int i=0;i<s.length();i++){
        cout<<s[i];
        if(s[i]!='-'&&(x-i)>0&&(x-i)%3==0){
            cout<<',';
        }
    }
    return 0;
}

1002_A+B for Polynomials (25%)

#include<iostream>
using namespace std;
int main(){
    float list[1001]={0};
    int k,exp;
    float coe;
    for(int i=0;i<2;i++){
        scanf("%d",&k);
        for(int j=0;j<k;j++){
            scanf("%d%f",&exp,&coe);
            list[exp]+= coe;
        }
    }
    int k2 = 0;
    for(int i=0;i<1001;i++){
        if(list[i]!=0){
            k2++;
        }
    }
    printf("%d",k2);
    for(int i=1000;i>=0;i--){
        if(list[i]!=0.0){
            printf(" %d %.1f",i,list[i]);
        }
    }
    return 0;
}

1003_Emergency (25%)

#include<iostream>
using namespace std;
int main(){
    const int MAX = 9999999;
    int min;
    int cityNum,roadNum,start,end;
    scanf("%d%d%d%d",&cityNum,&roadNum,&start,&end);
    int team[500];
    int sum[500];
    int teamNum[500];
    int distance[500][500];
    int path[500];
    int visited[500];
    for(int i=0;i<cityNum;i++){
        scanf("%d",&team[i]);
    }
    fill(distance[0],distance[0]+500*500,MAX);
    fill(path,path+500,MAX);
    int x,y,l;
    for(int i=0;i<roadNum;i++){
        scanf("%d%d%d",&x,&y,&l);
        distance[x][y] = distance[y][x] = l;
    }
    path[start] = 0;
    teamNum[start] = team[start];
    sum[start] = 1;
    for(int i=0;i<cityNum;i++){
        min = MAX;
        int u = -1;
        for(int j=0;j<cityNum;j++){
            if(visited[j]==0&&path[j]<min){
                u = j;
                min = path[j];
            }
        }
        if(u == -1){break;}
        visited[u] = 1;
        for(int v=0;v<cityNum;v++){
            if(visited[v]==0&&distance[u][v]!=MAX){
                if(path[u]+distance[u][v]<path[v]){
                    path[v] = path[u] + distance[u][v]; 
                    sum[v] = sum[u];
                    teamNum[v] = teamNum[u]+team[v];
                }else if(path[u]+distance[u][v]==path[v]){
                    sum[v] = sum[u] + sum[v];
                    if(teamNum[u]+team[v]>teamNum[v]){
                        teamNum[v] = teamNum[u]+team[v];
                    }
                }
            }
        }
    }
    printf("%d %d",sum[end],teamNum[end]);
    return 0;
}