题目描述
【题目描述】
读入一个无向图(可能含有多个连通分支),输出最多能删掉多少条边,而不改变这个图任意两点的连通性(原来连通的两个点依然连通,不连通的依然不连通)。
【输入格式】
第一行为图的顶点数N(1≤N≤1000)和边数M(0≤M ≤(N*(N+1)/2) ),它们之间用一个空格隔开,图中的顶点用1到N的整数标号。
接下来的M行,每行用两个数v1和v2表示一条边。v1和v2用一个空格隔开,表示这条边所连接的顶点的标号(v1≠v2),同一条边不会重复出现。
【输出格式】
输出最多能删掉的边数。
输入
输出
样例输入
5 7 4 5 1 2 1 3 1 4 2 3 2 4 3 4
样例输出
3
题解:n个点只用保留n-1条边,只要用m-(n-1)就行了
代码:
1 #include<cstdio> 2 using namespace std; 3 int n,m; 4 int main() 5 { 6 scanf("%d%d",&n,&m); 7 for(int i=1;i<=m;i++) 8 { 9 int x,y; 10 scanf("%d%d",&x,&y); 11 } 12 printf("%d\n",m-n+1); 13 return 0; 14 15 }
注:上面的图片侵权抱歉!