Помогите составить список вместо

Нужно сделать так чтобы программа работала не только на с++, но и на си.

#define _CRT_SECURE_NO_WARNINGS
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <stdbool.h>
#include<vector>
#include<memory.h>

using namespace std;
int n, m;
vector<long> graph[100007];//сам граф
long visited[100007];
bool possible = true; // граф двудолен
void dfs(long v, int c) // v - вершина, c-цвет
{
    visited[v] = c; // красим вершину
    for (int j = 0; j < graph[v].size(); j++)
    {
        if (visited[graph[v][j]] == 0) //если вершина не покрашена
        {
            long new_colour;
            if (c == 1) // Меняем цвет
            {
                new_colour = 2;
            }
            else
            {
                new_colour = 1;
            }
            dfs(graph[v][j], new_colour); // Идем в другую вершину
        }
        if (visited[graph[v][j]] == c) // ребро соединяет вершины одинакового цвета,граф не двудолен
        {
            possible = false; // Не двудолен - значит не двудолен
        }
    }
}

int main()
{

    scanf("%d", &n);
    scanf("%d", &m);// n- количество вершин, m- количество ребер
    memset(visited, sizeof(visited), 0);
    for (int i = 1; i <= m; i++)
    {
        int p, q;
        scanf("%d", &p);
        scanf("%d", &q); // читаем ребро
        graph[p].push_back(q);
        graph[q].push_back(p);
    }
    for (int i = 1; i <= n; i++)
    {
        if (visited[i] == 0) // Если мы еще не посетили вершину
        {
            dfs(i, 1); // Идем ее красить
        }
    }
    if (!possible) // Граф не двудолен
    {
        printf("0");
        return 0;
    }
    printf("1");

    int s1=0;
    for (int i = 1; i <= n; i++)
    {
        if (visited[i] == 1) // Вершина покрашена в первый цвет
        {
            s1++;
        }
    }
    printf("\n");

    int s2 = 0;
    for (int i = 1; i <= n; i++)
    {
        if (visited[i] == 2) // Вершина покрашена во второй цвет
        {
            s2++;
        }
    }

    if (s1 >= s2) printf("%d", s2);
    else
        printf("%d", s1);
}

Ответы (0 шт):