大佬求助!!!TLE了

8. 图1-图的度数
题目ID:8252必做题20分
最新提交:
Time Limit Exceeded
0 分
历史最高:
Time Limit Exceeded
0 分
时间限制: 1000ms
空间限制: 131072kB
题目描述
时间限制:1s 空间限制:128M

题目描述:
无向图一个图中每个点的度数定义为这个点相邻的点的个数。

给出一张图,输出这个图中每个点的度数。

输入格式:
第一行包含两个正整数 N 和 M,表示有 N 个点,M 条边。(节点编号从 1 到 N)

接下来 M 行每行包含两个用空格隔开的正整数 u,v,表示一条从 u 到 v 的无向路径。保证没有重边和自环。

输出格式:
共 N 行,第 i 行表示第 i 个点的度数。

样例输入:
5 5
1 2
1 3
3 4
4 5
5 1

样例输出:
3
1
2
2
2

约定:
1 \leq N,M \leq 10^61≤N,M≤10
6
我的代码:

#include <bits/stdc++.h>
using namespace std;
vector<int> mp[1000010];
int n, m;
int main () {
  cin >> n >> m;
  while (m--) {
    int x, y;
    cin >> x >> y;
          mp[x].push_back(y);
      mp[y].push_back(x);
  }
  for (int i = 1; i <= n; i++) {
    int cnt = 0;
    for (int j = 1; j <= n; j++) {
      if (mp[i][j] != 0) cnt++; 
    }
    cout << cnt << '\n';
  }
  return 0;
}

你这个push_back之后下标从0开始,为什么你从1开始啊

#include <bits/stdc++.h>
using namespace std;
vector<int> mp[1000010];
int n, m;
int main () {
	cin >> n >> m;
	while (m--) {
    int x, y;
    cin >> x >> y;
		mp[x].push_back(y);
		mp[y].push_back(x);
	}
	for (int i = 1; i <= n; i++) {
		cout<<mp[i].size()<<endl;//直接输出长度不行吗
	}
	return 0;
}