第四行有误
for(int i = 1; i <= m; i++){ int x, y; scanf("%d%d", &x, &y); f[x] = y; }
应该为
for(int i = 1; i <= m; i++){ int x, y; scanf("%d%d", &x, &y); f[find(x)] = find(y); }
输入的时候就要合并了 不然后续可能会被覆盖掉
ps:太久没有写模板都忘了orz