Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
心血来潮,用set建了个邻接表,wa了,求指导。。。#pragma warning(disable:4786) #include <iostream> #include <set> using namespace std; const int MAX = 1000 + 5; int n, m; int cnt; set<int> iset[MAX]; void Floyd() { // 枚举每一个点u for (int u=1; u<=n; ++u) { // 对边 u-->v for (set<int>::iterator iter1=iset[u].begin(); iter1!=iset[u].end(); ++iter1) { int v = *iter1; // 对边 v-->w for (set<int>::iterator iter2=iset[v].begin(); iter2!=iset[v].end(); ++iter2) { int w = *iter2; iset[u].insert(w); } } } } int main() { int i; int u, v; // 输入数据 scanf("%d%d", &n, &m); for (i=1; i<=m; ++i) { scanf("%d%d", &u, &v); iset[u].insert(v); } cnt = 0; Floyd(); // 计算从点i出发的点数 for (i=1; i<=n; ++i) { cnt += iset[i].size(); } printf("%d\n", n*(n-1)/2 - cnt); return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator