曹是乙隻愛刷街的老曹,暑假期間,他每天都歡快地在陽光大學的校園裡刷街。河蟹看到歡快的曹,感到不爽。河蟹決定封鎖陽光大學,不讓曹刷街。
陽光大學的校園是一張由n個點構成的無向圖,n個點之間由m條道路連線。每只河蟹可以對乙個點進行封鎖,當某個點被封鎖後,與這個點相連的道路就被封鎖了,曹就無法在與這些道路上刷街了。非常悲劇的一點是,河蟹是一種不和諧的生物,當兩隻河蟹封鎖了相鄰的兩個點時,他們會發生衝突。
詢問:最少需要多少只河蟹,可以封鎖所有道路並且不發生衝突。
輸入格式:
第一行:兩個整數n,m
接下來m行:每行兩個整數a,b,表示點a到點b之間有道路相連。
輸出格式:
僅一行:如果河蟹無法封鎖所有道路,則輸出「impossible」,否則輸出乙個整數,表示最少需要多少只河蟹。
輸入樣例#1: 複製
3 31 21 3
2 3
輸出樣例#1: 複製
impossible
輸入樣例#2: 複製
3 21 22 3
輸出樣例#2: 複製
1
【資料規模】
1<=n<=10000,1<=m<=100000,任意兩點之間最多有一條道路。
染色,1010交錯染色
並且統計0,1個數,取最小
因為可能存在多個連通塊,需要累加
#include usingnamespace
std;
typedef
long
long
ll;#define inf 2147483647
const ll inf =0x3f3f3f3f3f3f3f3fll;
#define ri register inttemplate
inline t min(t a, t b, t c)
template
inline t max(t a, t b, t c)
template
inline t min(t a, t b, t c, t d)
template
inline t max(t a, t b, t c, t d)
#define scanf1(x) scanf("%d", &x)
#define scanf2(x, y) scanf("%d%d", &x, &y)
#define scanf3(x, y, z) scanf("%d%d%d", &x, &y, &z)
#define scanf4(x, y, z, x) scanf("%d%d%d%d", &x, &y, &z, &x)
#define pi acos(-1)
#define me(x, y) memset(x, y, sizeof(x));
#define for(i, a, b) for (int i = a; i <= b; i++)
#define ffor(i, a, b) for (int i = a; i >= b; i--)
#define bug printf("***********\n");
#define mp make_pair
#define pb push_back
const
int n = 1000005;//
name*******************************
intn,m;
struct
edge
e[n];
int tot=0
;int
head[n];
intvis[n];
int sum[5
];int ans=0
;int
color[n];
//function******************************
void add(int u,int
v)bool dfs(int u,int
col)
sum[col]++;
color[u]=col;
vis[u]=1
;
for(int p=head[u]; p; p=e[p].next)
return
true;}
//***************************************
intmain()
for(i,
1,n)
}ans+=min(sum[0],sum[1
]); }
cout
}
P1330 封鎖陽光大學
曹是乙隻愛刷街的老曹,暑假期間,他每天都歡快地在陽光大學的校園裡刷街。河蟹看到歡快的曹,感到不爽。河蟹決定封鎖陽光大學,不讓曹刷街。陽光大學的校園是一張由n個點構成的無向圖,n個點之間由m條道路連線。每只河蟹可以對乙個點進行封鎖,當某個點被封鎖後,與這個點相連的道路就被封鎖了,曹就無法在與這些道路上...
P1330 封鎖陽光大學
依題意可知,在圖中的每一條邊有且只有乙個點被選中 阻止老曹刷街 那麼就可以對其採取二分圖染色,一條邊中 乙個點為黑色,另乙個點為白色 如果一條邊中的兩個端點的顏色相同,則說明無解,輸出 ipossible 如果有解,就把白點的數目和黑點的數目取 min 即為答案。include include in...
P1330 封鎖陽光大學
兩個和諧河蟹不能在同一條邊的兩端。所以對於每條邊。只有乙個節點有和諧河蟹 所以說,我們可以將有和諧河蟹的看做一種顏色,或則是狀態。沒有河蟹看做另一種言顏色 這樣邊變成了二分圖染色 所以嗯 就可以dfs暴力染色,不過要注意。有可能有多個圖 include include includeusing na...